2025 년 7 월 17 일 : | 사설 토토 18 베타 2 릴리스!
이 문서는 지원되지 않는 버전의 사설 토토을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 18.4. 토토 베이 리토토 베이버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

18.4. 커널 리소스 관리

사설 토토때때로 특히 서버의 여러 사본이 동일한 시스템에서 또는 매우 큰 설치에서 실행될 때 때때로 다양한 운영 체제 자원 제한을 소진 할 수 있습니다. 이 섹션은에 사용 된 사설 토토 리소스를 설명합니다.사설 토토사설 토토 자원 소비와 관련된 문제를 해결하기 위해 취할 수있는 단계

18.4.1. 공유 메모리 및 세마포어

공유 메모리 및 세마포어는 총체적으로라고합니다."System V IPC"(메시지 대기열과 함께사설 토토). 을 제외하고Windows, 여기서사설 토토이 시설의 자체 교체 구현을 제공합니다. 이러한 시설은 운영을 위해 필요합니다사설 토토.

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

언제사설 토토다양한 하드 중 하나를 초과IPC제한, 서버는 시작을 거부하고 문제를 설명하는 유익한 오류 메시지를 남겨 두어야합니다. (참조섹션 18.3.1.) 관련 사설 토토 매개 변수는 다른 시스템에서 일관되게 이름을 지정합니다.표 18-1개요를 제공합니다. 그러나 설정하는 방법은 다양합니다. 일부 플랫폼에 대한 제안은 다음과 같습니다.

참고 :이전사설 토토9.3, 서버를 시작하는 데 필요한 시스템 v 공유 메모리의 양이 훨씬 컸습니다. 이전 버전의 서버를 실행중인 경우 서버 버전의 문서를 참조하십시오.

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

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

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

문제를 일으킬 가능성이 적은 것은 공유 메모리 세그먼트의 최소 크기입니다 (Shmmin).사설 토토(보통 1). 시스템 전체의 세그먼트 최대 수 (shmmni) 또는 프로세스 당 (SHMSEG) 시스템이 0으로 설정되지 않으면 문제를 일으키지 않을 것입니다.

사설 토토허용 된 연결 당 하나의 세마포어를 사용합니다 (max_connections), 허용 Autovacuum 작업자 프로세스 (autovacuum_max_workers) 허용 배경 프로세스 (max_worker_processes), 16 세트."매직 번호", 다른 응용 프로그램에서 사용하는 세마포어 세트와의 충돌을 감지합니다. 시스템의 최대 세마포어 수는에 의해 설정됩니다.SEMMNS, 결과적으로 적어도만큼 높아야합니다.max_connectionsplusautovacuum_max_workersplusmax_worker_processes, 16 개의 허용 된 연결과 작업자마다 추가로 1 개의 추가로 1 개의 추가로 1 개의 추가 정보가 있습니다 (공식 참조표 18-1). 매개 변수SEMMNI한 번에 시스템에 존재할 수있는 세마포어 세트 수에 대한 제한을 결정합니다. 따라서이 매개 변수는 적어도CEIL ((max_Connections + autovacuum_max_workers + max_worker_processes + 5) / 16). 허용 연결 수를 낮추는 것은 실패에 대한 임시 해결 방법이며, 일반적으로 혼란스럽게 말합니다"장치에 남은 공간 없음", 함수에서Semget.

경우에 따라 증가해야 할 수도 있습니다SEMMAP최소한 순서에 있어야SEMMNS. 시스템 에이 매개 변수가있는 경우 (많은 사람들은 그렇지 않음), 이용 가능한 세마포어의 각각의 연속 블록에 항목이 필요한 세마포어 리소스 맵의 크기를 정의합니다. 세마포어 세트가 해제되면 자유 블록에 인접한 기존 항목에 추가되거나 새 맵 항목에 등록됩니다. 지도가 가득 차면 해방 된 세마포어가 손실됩니다 (재부팅 될 때까지). 세마포 공간의 단편화는 시간이 지남에 따라 필요한 것보다 적은 수의 세마포르를 초래할 수 있습니다.

theSEMMSL매개 변수는 세트에 몇 개의 세마포어가있을 수 있는지 결정하는 매개 변수는 17 이상이어야합니다사설 토토.

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

aix

적어도 버전 5.1에서, 그러한 매개 변수에 대한 특별 구성을 수행 할 필요는 없어야합니다.Shmmax, 이것은 모든 메모리를 공유 메모리로 사용할 수 있도록 구성됩니다. 그것은와 같은 다른 데이터베이스에 일반적으로 사용되는 일종의 구성입니다.DB/2.

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

freebsd

기본 IPC 설정은를 사용하여 변경할 수 있습니다.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

해당 파일을 수정 한 후 새 설정이 적용하려면 재부팅이 필요합니다.

공유 메모리를 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.semmni = 100

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

일반적으로 증가하고 싶을 것입니다kern.ipc.semmniandkern.ipc.semmns, asnetbsd이들에 대한 기본 설정은 불편하게 작습니다.

공유 메모리를 RAM에 잠그고 교환으로 인해 정지되지 않도록 사설 토토을 구성 할 수도 있습니다. 이것은를 사용하여 달성 할 수 있습니다.sysctl설정kern.ipc.shm_use_phys.

netbsd5.0 전의 버전은 오래된 것처럼 작동합니다OpenBSD(아래 참조), 커널 매개 변수를 키워드로 설정해야한다는 점을 제외하고옵션not옵션.

OpenBSD

inOpenBSD3.3 이상, IPC 매개 변수를 사용하여 조정할 수 있습니다sysctl, 예 :

# sysctl kern.seminfo.semmni = 100

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

일반적으로 증가하고 싶을 것입니다kern.seminfo.semmniKern.seminfo.semmns, asOpenBSD이들에 대한 기본 설정은 불편하게 작습니다.

나이OpenBSD버전은 IPC 매개 변수를 변경하려면 사용자 정의 커널을 빌드해야합니다. 옵션을 확인하십시오SYSVSHMSYSVSEM도 활성화되어 있습니다. 다음은 사설 토토 구성 파일에서 다양한 매개 변수를 설정하는 방법의 예를 보여줍니다.

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

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

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

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

Linux

기본 최대 세그먼트 크기는 32MB이고 기본 최대 총 크기는 2097152 페이지입니다. 페이지는 거의 항상 4096 바이트입니다."거대한 페이지"(사용getConf Page_Size확인하려면).

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

$ 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

나머지 기본값의 크기는 매우 관대하며 일반적으로 변경이 필요하지 않습니다.

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의 최근 릴리스가 설정 시도를 무시한다고 조심하십시오Shmmax4096의 정확한 배수가 아닌 값으로.

Shmall이 플랫폼의 4KB 페이지로 측정됩니다.

이전 OS X 버전에서는 공유 메모리 매개 변수를 변경하려면 재부팅해야합니다. 10.5 현재 모든 것을 바꿀 수 있습니다shmmni즉시sysctl. 그러나 여전히 선호하는 값을 설정하는 것이 가장 좋습니다/etc/sysctl.conf, 값이 재부팅에 걸쳐 유지되도록합니다.

파일/etc/sysctl.confOS X 10.3.9 이상에서만 영광입니다. 이전 10.3.x 릴리스를 실행중인 경우 파일을 편집해야합니다/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

기본 구성에서는 512 kb의 공유 메모리 자당 세그먼트 만 허용됩니다. 설정을 늘리려면 먼저 디렉토리로 변경/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.htmlSolaris의 이전 버전에서 공유 메모리에 대한 정보.

Solaris2.10 (Solaris 10) 이상
Opensolaris

Solaris 10 이후에서, 그리고 OpenSolaris에서, 기본 공유 메모리 및 세마포어 설정은 대부분의 경우 충분합니다사설 토토응용 프로그램. Solaris는 이제 a에 기본값을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)

추가로 실행중인 경우사설 토토영역 내부에서도 영역 자원 사용 제한을 높여야 할 수도 있습니다. "2 장 : 프로젝트 및 작업"을 참조하십시오시스템 관리자 안내서자세한 내용은프로젝트prctl.

unixware

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

/etc/conf/bin/idtune -g shmmax

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

/etc/conf/bin/idtune shmmaxvalue

여기서value(바이트)를 사용하려는 새 값입니다. 설정 후Shmmax, 사설 토토을 재건 :

/etc/conf/bin/idbuild -B

및 재부팅.

18.4.2. systemd remobipc

ifSystemD사용 중이며, 운영 체제에 의해 IPC 리소스 (공유 메모리 및 세마포어)가 조기에 제거되지 않도록주의해야합니다. 이것은 소스에서 사설 토토을 설치할 때 특히 문제가됩니다. 사설 토토의 배포 패키지 사용자는에 영향을 줄 가능성이 적습니다.Postgres사용자는 일반적으로 시스템 사용자로 생성됩니다.

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

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

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

다른 유형의 IPC 객체 (공유 메모리 vs. 세마포어, 시스템 V 대 Posix)는 약간 다르게 처리됩니다SystemD, 따라서 일부 IPC 리소스가 다른 IPC 리소스가 다른 방식으로 제거되지 않음을 알 수 있습니다. 그러나 이러한 미묘한 차이에 의존하는 것은 권장하지 않습니다.

a"사용자 로그 아웃"관리자가 유지 보수 작업의 일부로 발생하거나 관리자가로 로그인 할 때 수동으로 발생할 수 있습니다.Postgres사용자 또는 이와 유사한 것이므로 일반적으로 예방하기가 어렵습니다.

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

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

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

removeipc = no

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

주의

이 두 가지 중 하나 이상을 보장해야합니다. 그렇지 않으면 사설 토토 서버는 매우 신뢰할 수 없습니다.

18.4.3. 자원 제한

UNIX와 유사한 운영 체제는 귀하의 운영을 방해 할 수있는 다양한 종류의 리소스 제한을 시행합니다사설 토토서버. 특히 중요한 것은 사용자 당 프로세스 수, 프로세스 당 열린 파일 수 및 각 프로세스에 사용할 수있는 메모리 량에 대한 제한입니다. 이들 각각은를 가지고 있습니다."하드"및 A"소프트"제한. 소프트 한계는 실제로 중요하지만 사용자는 하드 제한까지 변경할 수 있습니다. 단단한 제한은 루트 사용자 만 변경할 수 있습니다. 시스템 호출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사설 토토서버는 연결 당 하나의 프로세스를 사용하므로 다른 시스템의 나머지 부분에 필요한 것 외에도 허용되는 연결만큼 많은 프로세스를 제공해야합니다. 이것은 일반적으로 문제가되지 않지만 하나의 컴퓨터에서 여러 서버를 실행하면 상황이 빡빡해질 수 있습니다.

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

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

18.4.4. Linux Memory Overcommit

Linux 2.4 이상에서 기본 가상 메모리 동작이 최적이 아닙니다사설 토토. 사설 토토이 메모리 오버 커뮤지트를 구현하는 방식으로 인해 사설 토토이 종료 될 수 있습니다.사설 토토메모리가 어느 쪽이든 요구하는 경우 postmaster (마스터 서버 프로세스)사설 토토또는 다른 프로세스는 시스템이 가상 메모리가 부족하게됩니다.

이런 일이 발생하면 이와 같은 사설 토토 메시지가 표시됩니다 (해당 메시지를 찾을 위치에 대한 시스템 문서 및 구성을 참조하십시오) :.

메모리 밖으로 : 죽인 프로세스 12345 (Postgres).

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

이 문제를 피하는 한 가지 방법은 실행하는 것입니다사설 토토다른 프로세스가 메모리에서 기계를 실행하지 않도록 할 수있는 기계에서. 메모리가 단단 해지면 운영 체제의 스왑 공간을 늘리는 것이 문제를 피하는 데 도움이 될 수 있습니다. OOM (Memory of Memory) 킬러는 물리적 메모리와 스왑 공간이 소진 될 때만 호출되기 때문입니다..

if사설 토토자체는 메모리가 부족한 시스템의 원인이므로 구성을 변경하여 문제를 피할 수 있습니다. 경우에 따라 메모리 관련 구성 매개 변수를 낮추는 데 도움이 될 수 있습니다.shared_bufferswork_mem. 다른 경우에는 데이터베이스 서버 자체에 너무 많은 연결을 허용함으로써 문제가 발생할 수 있습니다. 많은 경우에, 줄이는 것이 더 낫다max_connections대신 외부 연결-풀링 소프트웨어를 사용하십시오.

Linux 2.6 이상에서 커널의 동작을 수정하여 그렇지 않도록"Overcommit"메모리. 이 설정은를 방지하지는 않지만OOM 킬러완전히 호출되지 않으면 기회가 크게 줄어들어 더 강력한 시스템 동작으로 이어질 것입니다. 이것은 엄격한 오버 커미트 모드를 통해를 선택하여 수행됩니다.sysctl:

sysctl -w vm.overcommit_memory = 2

또는 동등한 항목 배치/etc/sysctl.conf. 관련 설정을 수정하고 싶을 수도 있습니다vm.overcommit_ratio. 자세한 내용은 커널 문서 파일을 참조하십시오.https : //www.kernel.org/doc/documentation/vm/overcommit-accounting.

변경 유무에 관계없이 사용할 수있는 또 다른 접근법vm.overcommit_memory, 프로세스 별을 설정하는 것입니다OOM 점수 조정포스트 마스터 프로세스에 대한 가치-1000, 이에 따라 OOM 킬러가 목표로하지 않을 것이라고 보장합니다. 이것을하는 가장 간단한 방법은 실행하는 것입니다

echo -1000/proc/self/oom_score_adj

Postmaster의 시작 스크립트에서 우체국을 호출하기 직전. 이 조치는 근본으로 수행되어야합니다. 그렇지 않으면 효과가 없습니다. 따라서 루트 소유의 스타트 업 스크립트가 가장 쉬운 곳입니다. 이렇게하면 우체국 장을 호출하기 전에 이러한 환경 변수를 시작 스크립트에서 설정해야합니다.

Export pg_oom_adjust_file =/proc/self/oom_score_adj
내보내기 pg_oom_adjust_value = 0

이러한 설정으로 인해 우체국 마스터 아동 프로세스가 정상적인 OOM 점수 조정으로 0의 정상적인 OOM 점수 조정으로 실행되므로 OOM 킬러가 여전히 필요에 따라 타겟팅 할 수 있습니다. 다른 값을 사용할 수 있습니다pg_oom_adjust_value자식 프로세스가 다른 OOM 점수 조정과 함께 실행되도록하려는 경우. (pg_oom_adjust_value생략 할 수 있습니다.이 경우 기본값은 0으로 표시됩니다.) 설정하지 않으면pg_oom_adjust_file, 아동 프로세스는 우체국 장과 동일한 OOM 점수 조정으로 실행됩니다. 이는 우체국이 우선적 인 설정을 갖도록하는 것이기 때문에 현명하지 않습니다..

오래된 Linux 커널은 제공하지 않습니다/proc/self/oom_score_adj이지만 이전 버전의 동일한 기능이를 가질 수 있습니다./proc/self/oom_adj. 이것은 비활성화 값이를 제외하고 동일하게 작동합니다.-17not-1000.

참고 :일부 공급 업체의 Linux 2.4 커널은 2.6 오버 커미트의 초기 버전이있는 것으로보고되었습니다sysctl매개 변수. 그러나 설정vm.overcommit_memory43883_44063vm_enough_memory파일에서mm/mmap.c) 2.4 설치로 시도하기 전에 사설 토토에서 지원되는 내용을 확인하십시오. 의 존재오버 커미트-아코 팅문서화 파일아님기능이 있다는 증거로 간주됩니다. 의심 할 여지없이 커널 전문가 또는 커널 공급 업체를 참조하십시오.

18.4.5. Linux 거대한 페이지

거대한 페이지를 사용하면 큰 연속 메모리 덩어리를 사용할 때사설 토토특히 큰 값을 사용할 때.shared_buffers. 이 기능을 사용하려면사설 토토config_hugetlbfs = yconfig_hugetlb_page = y. 커널 설정을 조정해야합니다vm.nr_hugepages. 필요한 거대한 페이지의 수를 추정하려면 시작사설 토토거대한 페이지가 활성화되지 않고 우체국 장 마스터를 확인하십시오vmpeak값과 시스템의 거대한 페이지 크기를 사용하여/Proc파일 시스템. 이것은 다음과 같습니다 :

$헤드 -1 $ pgdata/postmaster.pid4170
$grep ^vmpeak/proc/4170/statusVMPEAK : 6490428 KB
$grep ^muglePagesize /proc /meminfo거대한 파지즈 : 2048 KB

6490428 / 2048대략 제공3169.154,이 예에서는 적어도 필요합니다.3170우리가 설정할 수있는 거대한 페이지 :

$sysctl -W vm.nr_hugepages = 3170

컴퓨터의 다른 프로그램에 큰 페이지가 필요한 경우 더 큰 설정이 적절할 것입니다. 이 설정을 추가하는 것을 잊지 마십시오/etc/sysctl.conf재부팅 후에 다시 적용되도록.

때로는 커널이 원하는 거대한 페이지를 즉시 할당 할 수 없으므로 명령을 반복하거나 재부팅해야 할 수도 있습니다. (재부팅 직후, 대부분의 기계 메모리는 거대한 페이지로 변환 할 수 있어야합니다.) 거대한 페이지 할당 상황을 확인하려면 다음을 사용하십시오.

$grep mgy /proc /meminfo

데이터베이스 서버의 운영 체제 사용자 권한을 설정하여 거대한 페이지를 사용할 수있는 권한을 부여해야 할 수도 있습니다vm.hugetlb_shm_groupviasysctl,/또는 메모리 잠금 허가를ulimit -l.

거대한 페이지의 기본 동작사설 토토가능하면 그것들을 사용하고 실패 할 때 일반 페이지로 돌아가는 것입니다. 거대한 페이지의 사용을 시행하려면 설정할 수 있습니다MAGIN_PAGEStoonin사설 토토.conf. 이 설정으로사설 토토충분한 페이지를 사용할 수 없으면 시작하지 못할 것입니다.

에 대한 자세한 설명은Linux거대한 페이지 기능을 살펴보십시오https : //www.kernel.org/doc/documentation/vm/hugetlbpage.txt.