반응형
어플리케이션 테스트중 갑자기 아래 에러가 발생하기 시작했다
2023-05-11 15:01:28.928 WARN [PoolBase.java:isConnectionAlive:184] - HikariPool-1 - Failed to validate connection ConnectionID:10 ClientConnectionId: a042e5e4-d1ba-484e-b0b3-969881846791 (연결이 닫혔습니다.). Possibly consider using a shorter maxLifetime value.
2023-05-11 15:01:28.952 WARN [IOBuffer.java:log:7238] - TDSCommand@7d589a0a (SQLServerStatement:158 executeXXX): Command could not be timed out. Reason: Socket closed
에러 발생하는 지점은 주기적으로 insert 문을 호출하는 지점이었는데 이부분에서 아래와 같이 로그로 커넥션 풀 확인을 해봤다
log.info("Current Connections: {}, Maximum Connections: {}", dataSource.getHikariPoolMXBean().getActiveConnections(), dataSource.getHikariConfigMXBean().getMaximumPoolSize());
디버깅을 해보니 insert 문을 계속 호출하다가 어느 순간부터 응답 속도가 느려지는 문제가 발생하는 것을 확인했다
결론적으로 말하면 문제는 SQL server의 CPU 사용량이 증가하면서 커넥션 연결이 끊기는 문제가 발생했습니다.
CPU 사용량이 증가하는원인은 쿼리, 설정등의 복합적인 문제가 있겠지만 저의 경우는 스프링이외에 다른곳에서 DB접근을 하면서 해당 어플리케이션에서 부하가 발생하는게 문제였습니다
반응형
'Spring' 카테고리의 다른 글
[Spring JPA] Executing an update/delete query (0) | 2023.04.28 |
---|---|
[Spring] DTO에 @Builder 사용시 JSON parse error: Cannot construct instance of 에러 발생하는 이유 (0) | 2023.04.04 |
[Spring JPA] 외래키를 복합키에 포함하기 (0) | 2023.03.31 |
Gradle (0) | 2023.03.29 |
[Spring] mapStruct에서 LocalDateTime을 epoch Milli로 변경하는 방법 (0) | 2023.03.24 |
댓글