[PostgreSQL] postgresql too many clients already 오류 발생 및 해결 방법

참고


개요

  • 현재 ADC Egde 에서는 postgreSQL 데이터베이스를 이용하여 서비스를 제공해주고 있습니다.
  • 또한 pgAdmin, 그라파나 등에서도 postgres 에 직접 접근하여 Session 에 직접 영향을 주고 있습니다.
  • 그러던 중에 too many clients already 라는 에러를 접하게 되었습니다.

too many clients already 에러 발생 원인

  • too many clients already 발생한 이유는, postgreSQL 에서 설정한 max_connections 설정 값을 통해 Connection 수가 지정되어 있는데, Session Connection 수가 설정 값을 초과하여 발생하는 원인입니다.
too many clients already

  • too many clients already 에러가 발생하게 되면, Grafana 에서도 위와 같이 같은 에러 구문이 출력 되는 것을 확인할 수 있습니다.

해결 방법

  • postgresql 에서 postgresql.conf 파일에 있는 max_connections 옵션의 설정을 변경해주면 됩니다.
  • postgresql.conf 파일에서 초기 Default 값으로 max_connections = 100 으로 100개의 Session 까지 허용 되도록 되어있습니다.
  • max_connections 설정 값을 100 에서 넉넉히 3000 까지 늘려주었습니다.
max_connections = 3000

DB 재기동

  • postgresql.conf 파일 수정을 완료 하였다면, DB 재기동을 해야 합니다.
  • 현재 Docker 컨테이너를 통하여 postgres 를 기동 중이기 때문에, Docker 컨테이너를 ReStart 합니다.

적용 확인

  • DB 재기동 후, max_connection 수가 100에서 3000으로 정상적으로 바뀌었는지 확인합니다.
  • SHOW max_connections; 명령어를 통해 max_connection 적용된 값을 볼 수 있습니다.
  • 혹은 다음 SQL 구문으로 max_connection 수를 확인할 수 있습니다.
SELECT *
FROM   pg_settings
WHERE  name = 'max_connections';

  • 3000 으로 정상 등록 된 것을 확인할 수 있습니다.

테스트 결과

  • 현재 Session 수가 100개를 초과 하여도 too many clients already 에러가 발생하지 않는 것을 확인할 수 있습니다.
SELECT *
FROM pg_stat_activity
WHERE 1 = 1
AND DATNAME = '<DB 이름>'
  • 위 SQL 구문을 통해서 현재 데이터베이스의 Session 수를 확인할 수 있습니다.

728x90

이 글을 공유하기

댓글

Designed by JB FACTORY