Notice
Recent Posts
Recent Comments
Link
개발자는 기록이 답이다
트러블 슈팅 - Junit 테스트를 하다가 Lock wait timeout exceeded 에러 발생. 본문
Spring/트러블 슈팅
트러블 슈팅 - Junit 테스트를 하다가 Lock wait timeout exceeded 에러 발생.
slow-walker 2024. 3. 13. 22:27
프로젝트를 진행하면서 열심히 테스트를 하는 중인데, 갑자기 아래 에러가 발생하면서 테스트가 되지 않았습니다.
com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
락을 기다리다가 타임아웃을 초과했다고 나오는데, 해당 이슈를 해결하기 위해 아래 명령어를 사용했습니다.
SHOW FULL PROCESSLIS;
현재 데이터베이스에서 실행중인 모든 스레드와 해당 스레드가 현재 실행중인 쿼리에 대한 정보를 반환하는 메소드입니다.
해당 명령어를 사용하면 MySQL 서버에서 실행 중인 모든 작업을 볼 수 있으며, 각 작업의 상태 및 해당 작업이 수행 중인 쿼리에 대한 정보를 확인할 수 있습니다. 주로 MySQL 서버의 성능 모니터링 및 디버깅 목적으로 사용됩니다.
어떤 이유에서인지는 모르지만, 현재 쿼리 결과를 보면 여러 개의 Sleep 상태의 MySQL 연결이 보입니다.
이러한 연결은 일반적으로 클라이언트 애플리케이션이 MySQL과의 연결을 유지한 채로 아무런 작업을 수행하지 않고 대기 중인 상태를 의미하기때문에 MySQL 서버 측에서 해당 연결들을 종료시켜줬습니다.
KILL 스레드ID;
트랜잭션 관련해서 sql파일로 여러개 테스트했었는데, 그것 때문에 이렇게 연결이 유지되는 상황인지 아직까지 정확히 파악은 되지 않았습니다만 해당 문제는 이걸로 해결했습니다.
참고블로그 : https://jaejade.tistory.com/97
'Spring > 트러블 슈팅' 카테고리의 다른 글
@UtilityClass란? (0) | 2024.03.25 |
---|---|
트러블 슈팅 - 테스트코드도 코드이므로 합성을 통해 중복을 없애자 (0) | 2024.03.16 |
트러블 슈팅 - private 메소드를 테스트하려 했지만, 문제는 테스트 코드 로직이었다. (0) | 2024.03.13 |
쿠폰 발급에 대한 동시성 처리 (2) - MySQL의 NamedLock, Redis의 분산락(Lettuce, Redisson) (0) | 2024.03.02 |
쿠폰 발급에 대한 동시성 처리 (1) - synchronized, pessimistic Lock, optimistic Lock (0) | 2024.02.29 |