Transaction lock

신현기·2022년 8월 18일
0

rds cpu 점유율을 낮추는 방법

로직이 돌다가 DB 조회만 시작하면 그대로 중단되는 현상이 발생했다
이유를 찾다보니 DB에 lock이 걸려있었다.

원인은 transaction을 열어놓고 로직을 수행하던 도중 Exception이 발생했는데 sql client에 대한 처리가 제대로 되고있지 않아 커넥션을 계속 물고있어 해당 row에 lock이 걸린 것으로 보였다.

우선 transaction을 적절히 분배한 후 커넥션에 타임아웃을 걸어두었다.

또 모니터링을 하다보니 레코드가 너무 많아
조회 중 DB 과부하가 걸리는 문제가 있어 위험한 것 같아
vCPU 점유율을 낮추려고 다음 방법들을 사용했다
1. 불필요한 index 제거, 자주 사용되는 조건 index 추가
2. rds vCPU 늘리기
3. 무분별한 transaction 제거

계속 rds가 lock이 걸리는 현상이 사라졌다

profile
구르는거 좋아하는 개발자

0개의 댓글