어느날 갑자기 개발서버에서 hikari pool connection문제가 났다.
요청하나가 오래걸려도 너~무 오래걸려서 나머지 요청들이 타임아웃나는 현상..... 한참 뒤에 되긴되니깐 dead lock은 아님은 알았다....
로컬에서 히카리 맥시멈 풀 개수 늘려서 테스트했더니 잘되길래, 뭔가 커넥션을 물고 있는게 있다는 건 알겠는데, 도대체가 어딘지 찾을 수가 없었음.
이게 원인이 맞는 건지도 의문이고~ 애초에 현재 어플리케이션 인스턴스가 갖고있는 maximumPoolSize가 적은 건 아닐까.......... 그렇다고 개발서버 풀 개수 늘리자니 WAS가 먹는 리소스며 DB자체의 풀개수도 신경쓰이고...
해결을 하긴했다...
그 과정이 아래와 같따....
일단 하나씩 찍어보면서 connection을 물고 있는 api나 서비스가 무엇인지 파악하는 게 최우선임.
DB에 문제가 있는지, 로직에 불필요한 성능 이슈가 있는지, 통신하는 부분이 있는지 등등 원인은 다양할 수 있음.
되던게 안되는 거면 설정문제는 아님.
본사에 있을때는 잘되다가 현재 사이트로 왔을때, 문제가 됨.
여기 네트웤 환경이 구려서 원래 문제였던 부분이 대두되었을 수 있음.
암튼 온갖 삽질 끝에(책임님 천재...), 프록시 통신(feignClient)이 문제임을 확인했음. hrcommon.jar묶는 과정에서 코드서비스가 타 모듈 소스로 엎어쳐졌는데, 이 과정에서 모듈코드 조회시에 자기 자신을 프록시 통신으로 호출하고 있었음. 여기서 시간이 오래걸리면서 connection을 물고 있었고, 클라이언트 측에서 동시에 여러요청을 보내는 경우, hikari가 커넥션을 주지 못하고 타임아웃 나는 거였음ㅠㅠㅠ
근데 애초에 로컬에서 로컬로 통신하는데 솔직히 하.... 처리가 이렇게 느리다고.... 아니 여기는 무슨 보안이,,,, 네트웍 진심,,,, 하 그램도 구려~~~ㅠㅠㅠ
반나절 안녕.....