ERROR: out of memory

1694 단어 PostgreSQLHighgoDB
PostgreSQL 실행 중 OOM(메모리 부족) 오류가 발생할 수 있습니다. 오류 발생 예는 다음과 같습니다.
ERROR: out of memory

문제 발생 원인
1) 커널이 메모리를 과도하게 사용하는 방법을 실현하기 때문에, PostgreSQL 또는 다른 프로세스의 메모리 요구로 인해 시스템이 광 가상 메모리를 사용한다면, 커널은 PostgreSQL의postmaster 프로세스(주 서버 프로세스)를 종료할 수 있습니다.
2) 운영 체제의 OOM killer 프로세스가 전체 시스템 메모리 부족으로 인해 시작되면 다음과 같은 메시지가 나타날 수 있습니다.
LOG: server process (PID xxxx) was terminated by signal 9: Killed

3) PostgreSQL은 뚜렷한 메모리 부족 오류를 처리할 수 있습니다. 만약에 한 순간만 메모리 부족 상황이 발생하면 데이터베이스를 다시 시작하지 않은 상태에서 복구하고 데이터베이스 붕괴를 일으키지 않습니다.
4) OOM killer 메시지를 받으면 postgres 프로세스가 메모리 압력으로 인해 종료되었음을 나타냅니다.기존 데이터베이스 연결은 계속 정상적으로 작동하지만 새로운 연결은 받아들일 수 없습니다.복구하려면 PostgreSQL을 다시 시작해야 합니다.
해결 방법
1) 우선 분석을 위해 전체 로그 정보를 캡처할 수 있습니다.
2) 메모리 자원이 부족하면 운영체제의 교환 공간을 늘리는 데 도움이 된다. 왜냐하면 OOM killer는 물리적 메모리와 교환 공간이 다 소모될 때만 호출되기 때문이다.
3) PostgreSQL 자체가 시스템 메모리 소모의 원인이라면 구성 파라미터를 변경할 수 있습니다.어떤 경우 메모리와 관련된 설정 파라미터를 낮추는 데 도움이 될 수 있습니다. 특히shared_buffers 및 work_mem 이 두 개의 매개 변수.다른 경우 데이터베이스 서버에 너무 많은 연결을 허용하는 것도 이 문제를 초래할 수 있으므로 max_를 낮추는 것이 좋다연결 파라미터를 사용하고 외부 연결 풀 소프트웨어를 사용합니다.만약 이러한 메모리 부족(OOM) 오류가 자주 발생한다면, 우선 work_mem 매개 변수의 값은 안정성을 높일 수 있지만, 그 대가로 더 많은 정렬/산열 작업이 디스크로 넘어갈 수 있습니다.또한 더 많은 RAM을 사용해야 한다면 shared_buffers 매개 변수 값.이 조작을 진행할 때 반드시 매우 신중해야 하며, 버퍼 영역의 고속 캐시 적중률의 통계 정보를 시시각각 관찰해야 한다.
4) Linux 2.6 이상의 버전에서 커널의 동작을 수정할 수 있습니다.이 설정은 OOM killer가 호출되는 것을 막지는 못하지만, 가능성을 현저히 낮출 수 있습니다.
sysctl로 엄격한 과량 사용 패턴을 선택하여 실현할 수 있습니다.
sysctl -w vm.overcommit_memory=2
또는/etc/sysctl.conf에 등가 항목을 설정합니다.관련 설정 매개 변수를 수정해야 할 수도 있습니다: vm.overcommit_ratio, 이 매개 변수는 메모리가 분배될 때의 비율을 나타냅니다. vm만 표시됩니다.overcommit_memory=2 때 적용됩니다.
 
By Kalath

좋은 웹페이지 즐겨찾기