PostgreSQL 서버에 Out Of Memory가 발생하는 경우, PostgreSQL 자체를 재부팅해야지만 복구할 수 있다.
메모리가 부족해지고, Swap 영역이 증가하게 되면 Linux Kernel의 OOM Killer가 프로세스를 죽이게 된다. 그러면서 부족해진 메모리를 늘리고, Swap 영역을 줄인다.
이러면, 서버에 접속할 수 없는 수준으로 서버가 고장나는 일은 막을 수 있다. 그러나 OOM Killer가 Session을 죽이면서, DB Connection이 제 멋대로 끊길거다.
PostgreSQL: SSL SYSCALL error: EOF detected
그러면 PostgreSQL에서 이런 에러가 내뱉어지면서, PostgreSQL을 사용하는 앱에서는 에러가 마구 날거다.
이 경우, PostgreSQL의 메모리 사용 설정값을 조정하면, 이런 문제를 해소할 수 있다.
아니면 connection이 너무 많이 맺어져서 메모리를 많이 사용하게 된거일 수도 있다.
이 경우, max_connections을 줄이고, connection-pooling software ( ex. Pgpool )을 사용하는게 좋다.
OOM killer는 실제로 필요한 메모리보다 더 많은 메모리를 가상으로 할당(overcommit)했지만, 실제로 할당할 메모리가 없을 때 발생한다.
그래서 아예 overcommit을 하지 않게 설정하는 방법도 있다.
자세한 내용은 아래의 도큐먼트를 확인하면 된다!
PostgreSQL DOC - Linux Memory Overcommit
참고
'소프트웨어-이야기 > 데이터 저장소 + 시각화 ' 카테고리의 다른 글
(PostgreSQL)Idle in transaction 프로세스 자동으로 죽이기 (0) | 2018.08.04 |
---|---|
(PostgreSQL)PostgreSQL의 Idle In Transaction Connection (0) | 2018.08.04 |
(PostgreSQL) work_mem 메모리 설정 (0) | 2018.08.03 |
(데이터 시각화)Redash란? (0) | 2018.06.23 |
[Redis]Redis에서 LRU Cache를 사용하는 방법 (0) | 2018.02.03 |