서비스 오픈을 앞두고 있는 시점에서 서버가 터지는 일이 발생했는데, 한달 동안 두 번이나 이런 문제가 발생했다.

도대체 어디서 문제가 발생한건지 싶어 EC2에서 실행중인 스프링부트(WAS) 컨테이너의 로그를 확인해보았고,
다음과 같은 에러가 발생했다.

당시에 로그를 저장하지 않고, 컨테이너를 재실행해서 로그를 캡쳐하지 못했다... 다만 해당 포스팅에서 발생한 것과 동일한 에러가 발생했다. (로그를 어떻게 효과적으로 남길 수 있는지에 대해서도 추후 공부해볼 예정...!)
우리 서비스는 성적 파일을 업로드하거나 자신의 공학인증 결과를 조회할 때 커넥션을 사용하여 DB의 쿼리 결과를 가져온다. 하지만 아직 오픈하기 전이라 서버에 들어오는 사용자가 우리 개발진들(3명) 말고는 없없다. 즉, 다수의 요청으로 인한 과부하라기 보다는 애플리케이션 로직 상 문제가 있거나 RDS에서 설정된 커넥션 개수와 Hikari CP에서 설정된 커넥션 개수가 맞지 않는 등 내부에서 발생한 문제일 가능성이 높다고 판단했다.
이와 관련된 트러블 슈팅 글들을 참고하였으나... 내가 아직 모르는 개념들이 너무 많았다.
내가 정확히 이해하고 있지 못하거나 기본적인 내용 조차 모르는 것들
- 커넥션과 커넥션 풀(Hikari CP)
- 트랜잭션 전파
- 트랜잭션과 엔티티 매니저의 관계
대표적으로는 세 가지 정도이지만 디테일한 부분까지 따지면 훨씬 많다고 느꼈다.
앞으로 이 내용들을 숙지하여 정리하고, 이를 바탕으로 우리 서비스의 코드를 분석해보도록 하겠다.
또한, 앞으로 이와 같은 문제를 겪었을 때 도움이 될 수 있는 내용을 최대한 담아보도록 하겠다.
'사이드 프로젝트 > gonghak98 - 세종대 공학인증 웹 사이트' 카테고리의 다른 글
로그를 통해 우리는 논리적 사고를 할 수 있다 [커넥션 풀 트러블 슈팅 - 3] (4) | 2024.09.07 |
---|---|
로그를 분석하며 문제를 발견하다 [커넥션 풀 트러블 슈팅 - 2] (0) | 2024.08.30 |