✅ 정리

오랜만에 데이터를 보려고 들어갔다가 could not fork new process for connection, server closed the connection unexpectedly this probably means the server terminated abnormally before or while processing the request 에러를 확인했다.

에러 메시지를 기반으로 구글링 해보니까 프로세스 한도 초과, 시스템 과부하 라고 나오길래(참고 : https://p-ido.tistory.com/6) 참고 블로그를 보고 따라해보았다.

일단 user process를 확인해보자.

ulimit -a | grep processes

root로 접속해서 해당 경로의 파일을 수정

cd /etc/security/limits.d


하지만 내 경우는 확인해보니까 이미 `unlimited` 설정이 되어있었다. 그래서 그냥 다시 DB 서버를 시작하면 되나 싶어서 `su - (계정)` 으로 접속했는데 `su: cannot set user id: 자원이 일시적으로 사용 불가능함` 이라는 에러 메시지가 나왔다. 에러 하나도 해결 못했는걸 ?

이 에러도 찾아보니 사용자에 할당된 프로세스 갯수를 모두 소진했기 때문에, 계정 전환이 불가능한 상태라고 한다.
(참고 : https://www.skyer9.pe.kr/wordpress/?p=4915,
https://wasking.tistory.com/92) )

/etc/security/limit.conf 에서 아래와 같이 설정해주었다.

(계정이름) soft nproc 65535
(계정이름) hard nproc 65535

설정하고 su - (계정) 으로 접속했더니 다행스럽게도 su: cannot set user id: 자원이 일시적으로 사용 불가능함 이 에러는 해결이 되었다.

그러고 DB를 재기동 하기 위해 stop ➡ start를 순서대로 실행해주었다.

pg_ctl stop -m fast -D (경로)
pg_ctl start -D (경로)



위처럼 여러 단계를 거쳐서 다시 접속을 해보니 무사히 실행이 되었다.

그냥 단순히 DB 서버를 중지했다가 다시 시작한 것이지만 나중에 또
이런 상황이 발생하면 당황하지 않으려고 기록해본다 🙂

profile
조금씩 성장하는 개발자.

0개의 댓글