이 문서는 지원되지 않는 버전의 토토 꽁 머니을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 18.4. 토토 베이 리토토 베이 관리버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

17.4. 커널 리소스 관리

토토 꽁 머니때때로 할 수 있습니다 다양한 운영 체제 자원 제한, 특히시기를 배기하십시오 서버의 여러 사본이 동일한 시스템에서 또는 매우 큰 설치. 이 섹션에서는 커널을 설명합니다 사용하는 리소스토토 꽁 머니및 커널과 관련된 문제를 해결하기 위해 취할 수있는 단계 자원 소비.

​​17.4.1. 공유 기억과 세마포어

공유 메모리와 세마포어는 집합 적으로라고합니다."System V IPC"(함께 관련이없는 메시지 대기열토토 꽁 머니). 을 제외하고Windows, 여기서토토 꽁 머니자체 교체품을 제공합니다 이러한 시설의 구현, 이러한 시설이 필요합니다 실행하려면토토 꽁 머니.

이러한 시설의 완전한 부족은 일반적으로불법 시스템 호출오류가 발생합니다 서버 시작. 이 경우 대안은 없습니다 커널을 재구성하십시오.토토 꽁 머니그들 없이는 작동하지 않습니다. 이것 그러나 현대 운영 체제에서는 상황이 드물다.

언제토토 꽁 머니중 하나를 초과합니다 다양한 하드IPC한계, the 서버는 시작을 거부하고 유익한 오류를 남겨야합니다. 문제와 그것에 대해 무엇을 해야하는지 설명하는 메시지. (참조섹션 17.3.1.) 관련 커널 매개 변수는 일관되게 지명됩니다 다른 시스템에서;표 17-1개요. 그러나 설정하는 방법은 다양합니다. 제안 일부 플랫폼은 아래에 나와 있습니다.

참고 :이전토토 꽁 머니9.3, 공유 된 시스템 V의 양 서버를 시작하는 데 필요한 메모리가 훨씬 컸습니다. 당신이라면 이전 버전의 서버를 실행하면 서버 버전에 대한 문서.

표 17-1.System V IPC매개 변수

이름 설명 합리적인 값
Shmmax 공유 메모리 세그먼트의 최대 크기 (바이트) 최소 1KB (서버의 많은 사본을 실행하는 경우 더 자세)
Shmmin 공유 메모리 세그먼트의 최소 크기 (바이트) 1
Shmall 사용 가능한 공유 메모리의 총 금액 (바이트 또는 페이지) 바이트 인 경우Shmmax; if pages,CEIL (shmmax/page_size)
SHMSEG 프로세스 당 공유 메모리 세그먼트의 최대 수 1 세그먼트 만 필요하지만 기본값은 훨씬 높습니다
shmmni ​​공유 메모리 세그먼트의 최대 수 시스템 전체 LikeSHMSEG다른 것을위한 공간 응용 프로그램
SEMMNI 최대 세마포어 식별자 수 (즉, 세트) 적어도CEIL ((max_connections + autovacuum_max_workers + 배경 프로세스 수 + 5) / 16)
SEMMNS 시스템 전체의 세마포르의 최대 수 CEIL ((max_connections + autovacuum_max_workers + 배경 프로세스 수 + 5) / 16) * 17다른 응용 프로그램을위한 공간
SEMMSL 세트 당 최대 세부 수 최소 17
SEMMAP 세마포어 맵의 항목 수 텍스트 참조
SEMVMX 세마포어의 최대 값 최소 1000 (기본값은 종종 32767입니다. 변경하지 않으면 변경하지 마십시오. 필요한)

토토 꽁 머니몇 바이트가 필요합니다 시스템 v 공유 메모리 (일반적으로 64 비트 플랫폼에서 48 바이트) 서버의 각 사본에 대해. 대부분의 현대 운영 체제에서 금액을 쉽게 할당 할 수 있습니다. 그러나 당신이 많은 것을 달리고 있다면 서버 사본 또는 다른 응용 프로그램이 사용중인 경우 시스템 v 공유 메모리, 증가해야 할 수도 있습니다Shmmax, 공유 메모리의 바이트의 최대 크기 세그먼트 또는Shmall, 총 금액 시스템 v 공유 메모리 시스템 전체. 참고Shmall는 바이트가 아닌 페이지에서 측정됩니다 많은 시스템.

문제를 일으킬 가능성이 적은 것은 공유의 최소 크기입니다. 메모리 세그먼트 (Shmmin) 최대 약 32 바이트에 대한토토 꽁 머니(보통 1). 최대 값 시스템 전체 ( 세그먼트 수shmmni) 또는 프로세스 당 (SHMSEG)는 원인이 될 것 같지 않습니다 시스템이 0으로 설정되지 않는 한 문제.

토토 꽁 머니하나의 세마포어를 사용합니다 허용 된 연결 당 (max_connections), 허용 된 Autovacuum 작업자 프로세스 (autovacuum_max_workers) 공유 메모리 액세스를 요청하는 백그라운드 프로세스를 허용했습니다. 16 세트에서. 그러한 각 세트에는 17 번째 세마포도가 포함됩니다. 포함"매직 번호", to 다른 응용 분야에서 사용하는 세마포어 세트와 충돌을 감지하십시오. 시스템의 최대 세마포어 수는에 의해 설정됩니다.SEMMNS, 결과적으로 적어도 높아야합니다 처럼max_connectionsplusautovacuum_max_workers배경 수의 수 공유 메모리 액세스를 요청하는 프로세스 및 각각 1 개 추가 16 허용 연결과 근로자 (공식 참조표 17-1). 그만큼 매개 변수SEMMNI한도를 결정합니다 시스템에 하나씩 존재할 수있는 세마포어 세트 수 시간. 따라서이 매개 변수는 적어도CEIL ((max_connections + autovacuum_max_workers + 번호 배경 프로세스 + 5) / 16). 수를 줄입니다 허용 연결은 실패에 대한 임시 해결 방법입니다 일반적으로 혼란스럽게 말합니다"공간이 남지 않습니다 장치 ", 함수에서Semget.

경우에 따라 증가해야 할 수도 있습니다SEMMAP최소한 순서에 있어야SEMMNS. 이 매개 변수는 크기를 정의합니다 세마포어 리소스 맵. 세마포어에는 항목이 필요합니다. 세마포어 세트가 해제되면 자유에 인접한 기존 항목에 추가 블록 또는 새 맵 항목에 등록되어 있습니다. 지도가 있다면 완전하게, 해방 된 세마포어는 손실됩니다 (재부팅 될 때까지). 분열 세마포 공간 중 시간이 지남에 따라 더 적은 수준을 이용할 수 있습니다. 세마포르 인보다.

theSEMMSL파라미터 세트에 몇 개의 세마포어가있을 수 있는지, 17 이상이어야합니다.토토 꽁 머니.

관련된 다양한 기타 설정"세마포어 끄르다":SEMMNUandSemume, 영향을 미치지 마십시오토토 꽁 머니.

aix

적어도 버전 5.1에서, 어떤 일도 할 필요는 없습니다. 이러한 매개 변수에 대한 특수 구성Shmmax, 이것은 허용하도록 구성된다 공유 메모리로 사용되는 모든 메모리. 그것은 일종의 것입니다 과 같은 다른 데이터베이스에 일반적으로 사용되는 구성.DB/2.

그러나 글로벌 수정이 필요할 수 있습니다ulimit정보/etc/security/limits, 기본 하드 제한으로 파일 크기 (fsize) 및 숫자 파일 (nofiles) 너무 낮을 수 있습니다.

freebsd

기본 설정은를 사용하여 변경할 수 있습니다sysctl또는로더인터페이스. 다음 매개 변수는를 사용하여 설정할 수 있습니다.sysctl:

# sysctl kern.ipc.shmall = 32768
# sysctl kern.ipc.shmmax = 134217728

이러한 설정을 재부팅보다 계속 유지하려면 수정/etc/sysctl.conf.

이 세마포어 관련 설정은까지 읽기 전용입니다.sysctl걱정이지만 설정할 수 있습니다/boot/loader.conf:

kern.ipc.semmni = 256
kern.ipc.semmns = 512
kern.ipc.semmnu = 256

이 값을 수정 한 후 새 새에 재부팅이 필요합니다. 적용 할 설정. (참고 : freebsd는 사용하지 않습니다SEMMAP. 이전 버전은 수락하지만 무시할 것입니다 설정kern.ipc.semmap; 최신 버전은 그것을 완전히 거부합니다.)

공유를 잠그기 위해 커널을 구성 할 수도 있습니다. RAM으로 메모리를 사용하여 교환하기 위해 페지되지 않도록합니다. 이것 를 사용하여 달성 할 수 있습니다.sysctl설정kern.ipc.shm_use_phys.

활성화하여 freebsd 교도소에서 달리는 경우sysctl'ssecurity.jail.sysvipc_allowed, Postmaster다른 교도소에서 달리는 것 다른 운영 체제 사용자가 실행하십시오. 이것은 보안을 향상시킵니다 뿌리가 아닌 사용자가 공유를 방해하는 것을 방지하기 때문입니다 다른 교도소의 기억 또는 세마포어는 토토 꽁 머니 IPC 정리 코드가 올바르게 작동합니다. (freebsd 6.0에서 나중에 IPC 정리 코드는 프로세스를 제대로 감지하지 않습니다. 다른 교도소에서, 우체국 장의 달리기를 막아 다른 감옥에서 항구.)

freebsd4.0 작업 전 버전 좋다OpenBSD(아래 참조).

netbsd

innetbsd5.0 이상, IPC 매개 변수는를 사용하여 조정할 수 있습니다.sysctl, 예를 들어:

$ sysctl -W kern.ipc.shmmax = 16777216

이러한 설정이 재부팅을 통해 지속되도록하려면/etc/sysctl.conf.

공유를 잠그기 위해 커널을 구성 할 수도 있습니다. RAM으로 메모리를 사용하여 교환하기 위해 페지되지 않도록합니다. 이것 를 사용하여 달성 할 수 있습니다.sysctl설정kern.ipc.shm_use_phys.

netbsd5.0 작업 전 버전 좋다OpenBSD(아래 참조) 해당 매개 변수는 키워드로 설정해야합니다옵션not옵션.

OpenBSD

옵션SYSVSHMSYSVSEM커널이있을 때 활성화해야합니다 편집. (기본적으로) 공유 메모리의 최대 크기 옵션에 의해 결정됩니다shmmaxpgs(in 페이지). 다음은 다양한 것을 설정하는 방법에 대한 예를 보여줍니다. 매개 변수 :

옵션 sysvshm
옵션 shmmaxpgs = 4096
옵션 shmseg = 256

옵션 sysvsem
옵션 semmni = 256
옵션 SEMMNS = 512
옵션 semmnu = 256
hp-ux

기본 설정은 일반 설치에 충분한 경향이 있습니다. 에hp-ux10, 공장 기본값 을 위한SEMMNS는 128이며 너무 낮을 수 있습니다 더 큰 데이터베이스 사이트의 경우

IPC매개 변수를 설정할 수 있습니다 그만큼시스템 관리 관리자(SAM) 아래커널 구성-구성 가능한 매개 변수. 선택하다새 커널 만들기완료되면.

Linux

기본 최대 세그먼트 크기는 32MB이고 기본값 최대 총 크기는 2097152 페이지입니다. 페이지는 거의 항상 4096입니다 비정상적인 커널 구성을 제외한 바이트"거대한 페이지"(사용GetConf page_size확인하려면).

공유 메모리 크기 설정은를 통해 변경할 수 있습니다.sysctl인터페이스. 예를 들어, 16을 허용합니다 GB :

$ sysctl -w kernel.shmmax = 17179869184
$ sysctl -w kernel.shmall = 4194304

또한이 설정은 재부팅 사이에 보존 될 수 있습니다. 파일/etc/sysctl.conf. 그렇게하는 것입니다 적극 권장됩니다.

고대 분포가 없을 수도 있습니다sysctl프로그램이지만 동등한 변경을 할 수 있습니다 조작으로/Proc파일 체계:

$ echo 17179869184/proc/sys/kernel/shmmax
$ echo 4194304/proc/sys/kernel/shmall

나머지 기본값의 크기는 매우 관대합니다 변경이 필요하지 않습니다.

Mac OS X

OS X에서 공유 메모리를 구성하는 권장 방법은 라는 파일을 만들려면/etc/sysctl.conf, 다음과 같은 가변 할당 포함

kern.sysv.shmmax = 4194304
kern.sysv.shmmin = 1
kern.sysv.shmmni = 32
kern.sysv.shmseg = 8
kern.sysv.shmall = 1024

일부 OS X 버전에서모두 5공유 메모리 매개 변수 설정해야합니다./etc/sysctl.conf값은 무시됩니다.

OS X의 최근 릴리스가 설정 시도를 무시한다고 조심하십시오Shmmax정확하지 않은 값으로 4096의 배수.

Shmall는 4kb 페이지로 측정됩니다 이 플랫폼.

이전 OS X 버전에서는 변경 사항을 변경하려면 재부팅해야합니다. 공유 메모리 매개 변수에서 발효됩니다. 10.5 기준으로 모든 것을 바꿀 수 있습니다shmmnion 비행, 사용sysctl. 그러나 여전히입니다 를 통해 선호하는 값을 설정하는 것이 가장 좋습니다/etc/sysctl.conf, 값이 유지되도록 재부팅을 가로 질러.

파일/etc/sysctl.conf전용입니다 OS X 10.3.9 이상에서 영광을 누 렸습니다. 이전에 실행중인 경우 10.3.x release, 파일 편집/etc/rc다음 값을 변경하십시오 명령 :

sysctl -w kern.sysv.shmmax
sysctl -w kern.sysv.shmin
sysctl -w kern.sysv.shmmni
sysctl -w kern.sysv.shmseg
sysctl -w kern.sysv.shmall

참고/etc/rc보통입니다 OS X 시스템 업데이트에 의해 덮어 써서 각 업데이트 후에이 편집을 다시 할 수 있습니다.

OS X 10.2 이상 에서이 명령을 파일/System/Library/StartUpitems/SystemTuning/SystemTuning.

SCO OpenServer

기본 구성에서는 512kb의 공유 메모리 만 세그먼트가 허용됩니다. 설정을 늘리려면 먼저로 변경하십시오 예배 규칙서/etc/conf/cf.d. 표시하려면 현재 값Shmmax, run :

./configure -y shmmax

새 값을 설정하려면Shmmax, run :

./configure shmmax =value

여기서value새로운 가치입니다 바이트로 사용하고 싶습니다. 설정 후Shmmax, 커널 재건 :

./link_unix

및 재부팅.

Solaris2.6 ~ 2.9 (Solaris 6 Solaris 9)

관련 설정을 변경할 수 있습니다/etc/system, 예 :

SET SHMSYS : SHMINFO_SHMMAX = 0X2000000
SHMSS를 설정하십시오 : SHMINFO_SHMMIN = 1
SHMSS를 설정하십시오 : SHMINFO_SHMMNI = 256
SHMSS를 설정하십시오 : SHMINFO_SHMSEG = 256

SEMSYS 세트 : SEMINFO_SEMMAP = 256
SEMSYS 세트 : SEMINFO_SEMMNI = 512
SEMSYS 세트 : SEMINFO_SEMMNS = 512
SEMSYS 세트 : SEMINFO_SEMMSL = 32

변경 사항이 적용되도록 재부팅해야합니다. 참조 참조http : //sunsite.uakom.sk/sunworldonline/swol-09-1997/swol-09-insidesolaris.html이전 버전의 공유 메모리에 대한 정보 Solaris.

Solaris2.10 (Solaris 10) 및 나중에
Opensolaris

Solaris 10 이상에서, 그리고 Opensolaris에서, 기본값은 공유 메모리와 세마포어 설정은 대부분에 충분합니다토토 꽁 머니응용 프로그램. Solaris는 이제 불이행합니다Shmmax시스템의 1/4RAM. 이것을 추가로 조정합니다 설정,와 관련된 프로젝트 설정 사용Postgres사용자. 예를 들어 다음을로 실행합니다.루트:

projadd -c "토토 꽁 머니 db user"-k "project.max -shm -memory = (권한, 8GB, 거부)"-u postgres -g postgres user.postgres

이 명령은를 추가합니다.user.postgres프로젝트 및 공유 메모리 최대 값을 설정하고Postgres사용자는 8GB로, 다음에 적용됩니다 해당 사용자가 로그인하거나 다시 시작할 때토토 꽁 머니(다시로드 아님). 위의 가정합니다 저것토토 꽁 머니Postgres사용자의 사용자Postgres그룹. 서버 재부팅이 필요하지 않습니다.

다른 권장 커널 설정 데이터베이스 서버의 변경 많은 연결이있는 것은 다음과 같습니다.

project.max-shm-ids = (priv, 32768, deny)
project.max-sem-ids = (priv, 4096, deny)
project.max-msg-ids = (priv, 4096, deny)

또한 실행중인 경우토토 꽁 머니영역 내부에서 필요할 수 있습니다 영역 자원 사용 제한을 높이십시오. "CHAPTER2 : 프로젝트 및 과제 "에서시스템 관리자 안내서자세한 내용은프로젝트prctl.

unixware

onunixware7, 최대 크기 공유 메모리 세그먼트의 경우 기본 구성에서 512kb입니다. 의 현재 값을 표시하려면Shmmax, 달리다:

/etc/conf/bin/idtune -g shmmax

현재, 기본값, 최소 및 최대치를 표시합니다 값. 새로운 값을 설정하려면Shmmax, 달리다:

/etc/conf/bin/idtune shmmaxvalue

여기서value새로운 가치입니다 바이트로 사용하고 싶습니다. 설정 후Shmmax, 커널 재건 :

/etc/conf/bin/idbuild -B

및 재부팅.

17.4.2. systemd remobipc

ifSystemD사용 중입니다 IPC 리소스 (공유 메모리 및 세마포어)가 운영 체제에 의해 조기 제거되지 않습니다. 이것은 특히입니다 소스에서 토토 꽁 머니을 설치할 때 우려 사용자의 토토 꽁 머니의 분포 패키지는 영향을받을 가능성이 적습니다. 로Postgres사용자는 정상적입니다 시스템 사용자로 생성되었습니다.

설정removeipcinlogind.confIPC 객체인지 여부를 제어합니다 사용자가 완전히 로그 아웃 할 때 제거되었습니다. 시스템 사용자는 면제됩니다. 이것 기본값 설정 켜기SystemD그러나 일부 운영 체제 배포판이 꺼져 있습니다.

이 설정이 켜져있을 때 일반적인 관찰 효과는 Postgresql 서버에서 사용하는 세마포어 객체는 제거됩니다. 명백히 임의의 시간, 서버가 로그와 충돌하는 것으로 와 같은 메시지

로그 : SEMCTL (1234567890, 0, IPC_RMID, ...) 실패 : 잘못된 인수

다른 유형의 IPC 객체 (공유 메모리 vs. 세마포어, 시스템 v vs. posix)는에 의해 약간 다르게 취급됩니다.SystemD, 그것을 관찰 할 수 있습니다 일부 IPC 리소스는 다른 IPC 리소스와 같은 방식으로 제거되지 않습니다. 하지만 이러한 미묘한 차이에 의존하는 것은 좋지 않습니다.

a"사용자 로그 아웃"유지 보수 작업의 일부 또는 관리자가 로그인 할 때 수동으로 로Postgres사용자 또는 유사한 것, 그래서 일반적으로 예방하기가 어렵습니다.

A"시스템 사용자"결정됩니다 에SystemDSYS_UID_MAX설정에서/etc/login.defs.

포장 및 배포 스크립트는 신중해야Postgres사용하여 시스템 사용자로서의 사용자userAdd -r, Adduser --체계또는 동등한.

또는 사용자 계정이 잘못 만들어진 경우 또는 변경할 수없고 설정하는 것이 좋습니다

removeipc = no

in/etc/systemd/logind.conf또는 다른 적절한 구성 파일.

주의

이 두 가지 중 적어도 하나 이상을 보장해야합니다. Postgresql Server는 매우 신뢰할 수 없습니다.

17.4.3. 의지 제한

유닉스와 같은 운영 체제는 다양한 종류의 리소스를 시행합니다 귀하의 작동을 방해 할 수있는 한계토토 꽁 머니서버. 특히 중요합니다 사용자 당 프로세스 수에 대한 제한, 개방 수입니다. 프로세스 당 파일 및 각각 이용 가능한 메모리 양 프로세스. 이들 각각은를 가지고 있습니다."hard"및 에이"소프트"제한. 소프트 한계는 무엇입니다 실제로 계산되지만 사용자는 하드까지 변경할 수 있습니다. 한계. 단단한 제한은 루트 사용자 만 변경할 수 있습니다. 그만큼 시스템 호출setRlimit책임이 있습니다 이 매개 변수를 설정합니다. 쉘의 내장 명령ulimit(Bourne Shells) 또는Limit(CSH)가 사용됩니다 명령 줄에서 자원 제한을 제어합니다. ~에 BSD 유래 시스템 파일/etc/login.conf다양한 자원을 제어합니다 로그인 중에 설정된 제한. 운영 체제 문서를 참조하십시오 세부. 관련 매개 변수는입니다.MaxProc, OpenFilesDataSize. 예를 들어:

기본값 : \
...
        : datasize-cur = 256m : \
        : maxproc-cur = 256 : \
        : OpenFiles-Cur = 256 : \
...

(-cur는 소프트 한계입니다. 부록-max하드 제한을 설정하려면)

커널은 일부 리소스에 시스템 전체 제한을 가질 수 있습니다.

  • onLinux /proc/sys/fs/file-max최대 숫자를 결정합니다 커널이 지원할 열린 파일. 변경할 수 있습니다 파일에 다른 번호를 쓰거나 할당을 추가하여 안에/etc/sysctl.conf. 최대 한계 프로세스 당 파일은 커널이 컴파일 될 때 고정됩니다. 보다/usr/src/linux/documentation/proc.txt더 많은 정보.

the토토 꽁 머니서버는 하나를 사용합니다 연결 당 프로세스를 통해 최소한 많은 것을 제공해야합니다. 필요한 것 외에 허용되는 연결 프로세스 나머지 시스템. 이것은 일반적으로 문제가 아니라 당신이 있다면 하나의 컴퓨터에서 여러 서버를 실행할 수 있습니다.

열기 파일의 공장 기본 제한이 종종 설정됩니다"사회적으로 친근한"허용하는 값 많은 사용자가 부적절한 것을 사용하지 않고 컴퓨터에 공존 할 수 있습니다. 시스템 리소스의 일부. a에서 많은 서버를 실행하는 경우 기계는 아마도 당신이 원하는 것일 것입니다. 그러나 전용 서버에서 이 한도를 높이고 싶을 수도 있습니다.

동전의 반대편에서 일부 시스템은 개인을 허용합니다. 많은 수의 파일을 열기위한 프로세스; 몇 명 이상 프로세스는 그렇게하면 시스템 전체의 한계를 쉽게 초과 할 수 있습니다. 이런 일이 발생하고 변경하고 싶지 않다면 시스템 전체의 한도, 설정할 수 있습니다토토 꽁 머니'smax_files_per_process개방형 파일의 소비를 제한하는 구성 매개 변수.

17.4.4. Linux Memory Overcommit

Linux 2.4 이상에서 기본 가상 메모리 동작은 다음과 같습니다. 최적이 아닌토토 꽁 머니. 커널이 메모리 오버 커미트를 구현하는 방식 때문에 커널은를 종료 할 수 있습니다.토토 꽁 머니Postmaster (마스터 서버 프로세스) 메모리가 어느 쪽이든 요구하는 경우토토 꽁 머니또는 다른 프로세스로 인해 시스템이 발생합니다 가상 메모리가 부족합니다.

이런 일이 발생하면 모양의 커널 메시지가 표시됩니다. 이 (시스템 문서 및 구성을 참조하십시오 그러한 메시지를 찾으려면) :

기억 부족 : 죽인 과정 12345 (Postgres).

이것은임을 나타냅니다.Postgres메모리 압력으로 인해 프로세스가 종료되었습니다. 하지만 기존 데이터베이스 연결은 정상적으로 계속 작동합니다. 새로운 연결은 수락되지 않습니다. 회복하려면토토 꽁 머니다시 시작해야합니다.

이 문제를 피하는 한 가지 방법은 실행하는 것입니다토토 꽁 머니확신 할 수있는 기계에서 다른 프로세스는 메모리에서 기계를 실행하지 않습니다. 만약에 메모리가 빡빡해서 운영 체제의 스왑 공간이 증가합니다. 메모리 외 (OOM) 킬러이기 때문에 문제를 피하는 데 도움이 될 수 있습니다. 물리적 메모리와 스왑 공간이있는 경우에만 호출됩니다. 탈진한.

if토토 꽁 머니그 자체는입니다 메모리가 부족한 시스템의 원인은 구성을 변경하여 문제가 발생합니다. 어떤 경우에는 도움이 될 수 있습니다 메모리 관련 구성 매개 변수를 낮추려면shared_buffersandwork_mem. 다른 경우에는 문제가있을 수 있습니다 데이터베이스 서버에 너무 많은 연결을 허용하여 발생합니다. 그 자체. 많은 경우에, 줄이는 것이 더 낫다max_connections대신 외부를 사용하십시오 연결 고풀 소프트웨어.

Linux 2.6 이상에서 커널을 수정할 수 있습니다. 행동하지 않도록 행동"Overcommit"메모리. 이 설정은 그렇지 않지만 방지OOM 킬러완전히 호출되지 않으면 더 낮아집니다 따라서 기회는 크게 시스템 행동. 이것은 엄격한 오버 커미트 모드를 선택하여 수행됩니다 을 통해sysctl:

sysctl -w vm.overcommit_memory = 2

또는 동등한 항목 배치/etc/sysctl.conf. 당신은 또한 수정하고 싶을 수도 있습니다 관련 설정vm.overcommit_ratio. 을 위한 세부 사항 커널 문서 파일 참조Documentation/VM/Overcommit-Accounting.

변경 유무에 관계없이 사용할 수있는 또 다른 접근법vm.overcommit_memory, 프로세스 별OOM_SCORE_ADJ가치 우체국 장 과정-1000OOM 킬러가 목표로 삼지 않을 것이라고 보장합니다. 그만큼 이것을하는 가장 간단한 방법은 실행하는 것입니다

echo -1000/proc/self/oom_score_adj

우체국 마스터의 시작 스크립트에서 우체국 장. 이 조치는 루트로 수행해야합니다. 그렇지 않으면 효과가 없습니다. 루트 소유의 스타트 업 스크립트가 가장 쉬운 곳입니다 그것을하기 위해. 이렇게하면 구축을 원할 수도 있습니다토토 꽁 머니with-dlinux_oom_score_adj = 0추가CPPFLAGS. 이로 인해 우체국 장부 아동 프로세스가 발생합니다 정상과 함께 실행하려면OOM_SCORE_ADJ값 oom 킬러가 여전히 필요에 따라 그들을 대상으로 할 수 있도록 0의 0입니다.

오래된 Linux 커널은 제공하지 않습니다/proc/self/oom_score_adj그러나 이전이있을 수 있습니다 라는 동일한 기능의 버전/proc/self/oom_adj. 이것은 제외하고 동일하게 작동합니다 값 비활성화-17not-1000. 해당 빌드 플래그토토 꽁 머니is-dlinux_oom_adj = 0.

참고 :일부 공급 업체의 Linux 2.4 커널이보고되었습니다 초기 버전의 2.6 오버 커미트sysctl매개 변수. 그러나 설정vm.overcommit_memory2.4 커널에서 2 ~ 2 관련 코드가 없으면 상황이 나쁘지 않고 더 나빠질 것입니다. 그것 실제 커널 소스 코드를 검사하는 것이 좋습니다 ( 함수vm_enough_memory파일mm/mmap.c)) 2.4 설치로 시도하기 전에 커널에서 지원됩니다. 의 존재오버 커미트 계정문서화 파일not기능이 있습니다. 의심 할 여지없이 커널 전문가 또는 귀하의 커널 공급 업체.