ultra_dev
DB Connection Pool !! 본문
문제:
사내에서 docker로 postgreSQL을 띄우고 로컬에서 DB에 연결해서 프로젝트를 개발중이었다.
그런데 해당 postgreSQL에 연결된 다른 테스트용 솔루션들이 에러를 뱉기 시작했다.
500에러 발생..!
로그를 확인해서 원인을 찾아보니 too many connections ~
즉, 해당 PostgreSQL의 커넥션 풀이 부족하다는 것!
데이터베이스의 session을 확인해보니
was 하나 당 db connection이 default로 10개 잡혀 있는데
여러명이 해당 PostgreSQL과 연결해서 로컬에서 개발을 진행하다보니
postgres default max connection인 100개가 넘어가면서
postgres db에 접근을 못하게 되면서 발생하는 문제였다.
해결:
docker가 켜져있는 리눅스 서버에 원격 접속해서
sudo docker exec -it 도커컨테이너id vi /var/lib/postgresql/data/postgresql.conf
vi 모드로 postgresql.conf 파일을 들어가서
max connection을 수정!
현재는 여유롭게 사용 중이다.
ConnectionPool에 대해 복습할 수 있었던 좋은 경험이었다!!
WAS 단위로만 생각했었는데 저렇게 DB단위로 MaxConnection을 설정할 수 있고 PostgreSQL 내 다른 데이터베이스에도 전부 영향을 미친다는 걸 알 수 있어서 신기했다.
그리고
was가 켜지자마자 바로 db 세션에 커넥션이 10개씩(커넥션풀 갯수 default일 때) 잡히는 걸 확인하면서
커넥션풀이 어떤 식으로 작동하는 지를 알 수 있었던 것 같다.
+
커넥션 정보에 접속 ip, 어떤 어플리케이션으로 실행했는지, 어떤 쿼리를 언제 날렸는지 등등 여러 요소가 표시되는 걸 보니 재밌었다!
'DB' 카테고리의 다른 글
DB 이것 저것 정리! (feat.SQL 실행순서..) (0) | 2024.01.19 |
---|---|
Docker 내부 PostgresSQL Dump (0) | 2023.12.08 |
SQL -3 (0) | 2023.01.13 |
SQL -2 (0) | 2023.01.13 |
SQL -1 (0) | 2023.01.13 |