본문 바로가기

2018/08

(PostgreSQL) OOM Killer PostgreSQL 서버에 Out Of Memory가 발생하는 경우, PostgreSQL 자체를 재부팅해야지만 복구할 수 있다. 메모리가 부족해지고, Swap 영역이 증가하게 되면 Linux Kernel의 OOM Killer가 프로세스를 죽이게 된다. 그러면서 부족해진 메모리를 늘리고, Swap 영역을 줄인다. 이러면, 서버에 접속할 수 없는 수준으로 서버가 고장나는 일은 막을 수 있다. 그러나 OOM Killer가 Session을 죽이면서, DB Connection이 제 멋대로 끊길거다. PostgreSQL: SSL SYSCALL error: EOF detected 그러면 PostgreSQL에서 이런 에러가 내뱉어지면서, PostgreSQL을 사용하는 앱에서는 에러가 마구 날거다. 이 경우, Postg..
(PostgreSQL) work_mem 메모리 설정 postgresql의 work_mem이란? 이 값은 정렬 / 해시 / 조인 등의 동작에 사용될 수 있는 메모리 사용량을 의미한다. 이 메모리는 임시 디스크에 데이터를 쓰기 전에 사용된다. 기본값은 4MB으로 설정된다. 그런데 어떤 아티클에서는 일반적으로 64MB 정도가 적합한 수치라고 한다. 만약 PostgreSQL이 temporary file을 사용하고 있다면, work_mem을 늘리면 좋다. work_mem은 한 쿼리에서 사용되는 메모리 양을 의미하는게 아니다. 정렬 / 해시 / 조인 작업이 한 쿼리에서 동시에 일어날 수 있기 때문에, 각각의 동작에서 사용할 수 있는 메모리 수치를 의미한다. 만약 10GB짜리 데이터베이스를 쓴다고 가정해보자. 기본적으로 10MB씩 사용하는 커넥션이 100개가 있다고 ..