database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 10264 게시물 읽기
No. 10264
too many clients already 메시지가 발생하면서 서버가 다운되었습니다.
작성자
정상규(pajama)
작성일
2021-07-12 21:41ⓒ
2021-07-12 22:33ⓜ
조회수
1,986

안녕하세요. 

아래글의 내용과 거의 유사하게 sorry, too many clients already 메시지가 나오면서 DB서버 프로세스가 셧다운 되었습니다.

https://database.sarang.net/index.php?inc=read&aid=8021&criteria=pgsql

postgresql 버전은 9.4.4입니다.


lifekeeper라는 솔루션이 있어서 postgresql은 다시 기동시켜 준 것 같습니다만..

현재 max_connections 설정값은 100인데 설정값을 넘는 접속이 있더라도 DB가 셧다운 될수도 있는지요?

 

이 글에 대한 댓글이 총 7건 있습니다.

커넥션을 좀 늘리는게 좋지 않을까 합니다. 


커넥션 많다고 DB 가 그렇게 느려지지는 않더라구요. 


물론 접속 후 close 처리,

쿼리 최적화

connection pool 사용

pgbouncer 사용 및 사용 검토 등 

경험상 DB는 거의 1000밑으로는 본 적이 없는 것 같습니다. 

는 기본으로 되어 있어야 하구요. 


커낵션 max 차게 되면 보통 부하가 일어나고 WAS 등에서 빨간 불이 들어오죠. 

DB 에 상당한 부하를 줄 수 밖에 없고, DB가 내부 구조를 지킬 수 없다고 

판단하면 DB shutdown 도 될 수 있다고 봅니다. 

다행이 lifekeeper 로 관리를 하고 계시네요. 

lucky님이 2021-07-13 10:13에 작성한 댓글입니다. Edit

lucky님 답변 감사드립니다.

커넥션이 설정값을 초과할 때 db가 shutdown 될 가능성이 있는줄은 몰랐네요.

현재는 connection pool을 쓰는 구조는 아니라고 합니다.

평소에는 커넥션이 20~30개 정도이고 1300일 넘게 사용해왔는데 어플리케이션은 변경된 것이 없다고 하고..

뭔가 변경이 되지 않았나 의심은 드네요.

정상규(pajama)님이 2021-07-13 13:36에 작성한 댓글입니다.
이 댓글은 2021-07-13 13:36에 마지막으로 수정되었습니다.

uptime 은 어느정도 되는지? 

설마 1300일인가요? 

DB 는 한번씩 서버 재부팅을 하는게 좋아요.

(Lifekeeper 와 같은 솔루션 있다면 재부팅 하는 것도 좀 안심이 되죠) 


수년동안 재부팅을 안하면, 

DB나 OS에서 원인 모르는 오류가 나는 경우가 많습니다. 

그랬을 경우 재부팅 하면 좋아지는 경우도 봤구요. 


그리고 백그라운드 프로세스만 해도 수십개는 될 것 같은데 

100은 너무 적죠. 

관련 모니터링 DB 뷰로 수십분에서 시간 마다 프로세스를 정리해서 

테이블로 관리하면 도움이 많이 됩니다. 

lucky님이 2021-07-13 15:38에 작성한 댓글입니다. Edit

말씀과 조언 감사드립니다.

postgres uptime은 SELECT now() - pg_postmaster_start_time() 으로 매달 확인을 하고 있었는데

지난달까지는 1320일이었고, 이번달 12일에 확인하니 6일이었습니다. (OS의 uptime은 1703일을 넘었습니다)

ps 명령이나 lifekeeper 로그를 보고 7월 6일에 postgres 프로세스가 시작된것을 확인할 수 있었습니다.

오랜기간 사용하면서 memory leak이라던지 다른 이슈가 없다보니, 재부팅이나 DB프로세스 직접 재시작을 전혀 하지 않았습니다.


커넥션수는 select count(*) used from pg_stat_activity 쿼리로 보았을때 보통 25정도로 유지되고 있어서 100으로 충분하다고 보고 있었습니다.

정상규(pajama)님이 2021-07-13 17:53에 작성한 댓글입니다.

연결이 많아서 서버(요즘은 인스턴스라고 하네요)가 죽지는 않았을겝니다.

연결이 많아지면서 서버가 버벅거리고,

클러스터 솔루션의 서버 건강 검진 작업이 순조롭지 못해서,

클러스터 솔루션이 임의로 넘겼을 것 같네요.

클러스터 솔루션 로그를 살펴보세요.

그 로그에 이같은 흔적이 없다면, 데이터베이스 엔진 버그로 보는것이 맞습니다.


이런 경우라면, (요즘은 맨날 똑 같은 말을 하네요. )

데이터베이스 엔진 업그레이드 하세요.

김상기(ioseph)님이 2021-07-13 22:42에 작성한 댓글입니다.

상기님 댓글 남겨주셔서 감사합니다.


1300일이상이었던 인스턴스의 uptime이 6일로 나타나서 무슨일인가하고 

클러스터 솔루션(lifekeeper)의 로그를 보니 스탠바이 서버로 넘기진 않고 원래 위치에서 재시작을 시도한 것으로 보였습니다.


버전이 오래된 것이라 엔진 버그도 의심이 됩니다. 해당 버전의 버그리스트를 검색해볼까도 생각했는데 보수적인 고객이라 엔진 업그레이드는 아마 어려울 듯 하고 서버와 같이 통째로 교체할 때까지는 그냥 유지하지 않을까 싶습니다. 게다가 클러스터가 잘 살려놔서인지 인스턴스가 죽은것도 인지 못하고 있었더군요.

정상규(pajama)님이 2021-07-13 23:21에 작성한 댓글입니다.

https://docs.google.com/document/d/e/2PACX-1vTDZ9xHfw301ADVShOtjrcVHyqwS6HMfrNfRA_qRT5NTik25yyc9x1DJPyb6t5eTNAiCiQbNULS4tId/pub#h.75jerbcgvg1t

8. 고가용성과 복제

 

HA, High Availability, 위키피디아에서 ‘절대 고장나지 않음’ 이라고 우리말로 옮겼다.

 

다른 표현은 ‘고장이 나더라도 사용자 모르게 복구함’, 또는 ‘이 정도는 사용자가 불평 하지 않음’으로 이해하면 된다.


클러스터 솔루션이 밥값은 했네요. 크크

김상기(ioseph)님이 2021-07-14 00:53에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
10267온라인 PostgreSQL 테스트환경
류신
2021-07-19
1998
10266데이타 롤링(?)...데이타 순환(?) 해당 표현이 맞는지 모르겠지만, 고수님들의 도움이 필요합니다. [4]
알고싶어쇼
2021-07-13
1889
10265oracle > postgresql with recursive 재 질문드립니다.. [1]
꼬끼리
2021-07-13
1770
10264too many clients already 메시지가 발생하면서 서버가 다운되었습니다. [7]
정상규
2021-07-12
1986
10263oracle > postgresql with recursive 봐주세요 [1]
꼬끼리
2021-07-05
1959
10262rowtocol 함수 변환 [1]
대머리
2021-07-02
1875
10261날짜 기간 계산 [2]
2021-06-30
2054
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다