큰PostgreSQL설치는 다양한 운영 체제를 빠르게 소진 할 수 있습니다 범퍼카 토토 제한."큰"설치.) 발생한 경우 이런 종류의 문제, 계속 읽으십시오.
공유 메모리 및 세마포어는 총체적으로라고합니다."System V IPC"(함께 관련이없는 메시지 대기열PostgreSQL). 거의 모든 현대 운영Windows, PostgreSQL자체를 제공합니다 이러한 시설의 교체 구현 및 대부분
이러한 시설의 완전한 부족은 일반적으로 나타납니다 에 의해불법 시스템 호출오류 서버 시작시.PostgreSQL그들 없이는 작동하지 않습니다.
언제PostgreSQL하나를 초과합니다 다양한 하드IPC제한, 서버는 시작을 거부하고 발생한 문제를 설명하는 유익한 오류 메시지섹션 17.3.1.) 관련 범퍼카 토토 매개 변수는 지속적으로 이름을 지정합니다표 17-1개요.
표 17-1.시스템 다섯 IPC매개 변수
이름 | 설명 | 합리적인 값 |
---|---|---|
Shmmax | 공유 메모리 세그먼트의 최대 크기 (바이트) | 최소 몇 메가 바이트 (텍스트 참조) |
shmmin | 공유 메모리 세그먼트의 최소 크기 (바이트) | 1 |
Shmall | 이용 가능한 공유 메모리의 총 금액 (바이트 또는 페이지) | 바이트 인 경우Shmmax; if pages,CEIL (shmmax/page_size) |
SHMSEG | 최대 공유 메모리 세그먼트 당 프로세스 | 1 세그먼트 만 필요하지만 기본값은 많이 있습니다. 더 높은 |
shmmni | 공유 메모리 세그먼트의 최대 수 시스템 전체 | LikeSHMSEG플러스 공간 기타 응용 프로그램 |
SEMMNI | 최대 세마포어 식별자 수 (즉, 세트) | 적어도CEIL ((max_connections + autovacuum_max_workers) / 16) |
SEMMNS | 시스템 전체의 세마포르의 최대 수 | CEIL ((max_connections + autovacuum_max_workers) / 16) * 17플러스 공간 기타 응용 프로그램 |
SEMMSL | 세트 당 최대 세부 수 | 최소 17 |
SEMMAP | 세마포어 맵의 항목 수 | 텍스트 참조 |
SEMVMX | 세마포어의 최대 값 | 최소 1000 (기본값은 종종 32767입니다 강제하지 않는 한 변경) |
가장 중요한 공유 메모리 매개 변수는Shmmax, 공유 메모리 세그먼트의 최대 크기 (바이트).Shmget
Like잘못된 인수이 한도가 초과되었습니다.PostgreSQL구성 매개 변수로 표시테이블 17-2. (당신이 얻을 수있는 오류 메시지는 다음을 포함합니다PostgreSQLShmmax2MB만큼 작 으면 상당히 필요합니다 허용되는 성능에 대한 더 많은 것.
일부 시스템은 또한 공유 총 금액에 제한이 있습니다. 시스템의 메모리 (Shmall). 만들다PostgreSQL다른 응용 프로그램과 함께 공유 메모리 세그먼트를 사용하고 있습니다.Shmall는 바이트가 아닌 페이지에서 측정됩니다 많은 시스템.)
문제를 일으킬 가능성이 적은 것은 공유의 최소 크기입니다. 메모리 세그먼트 (shmmin) 최대 약 500kb를 위해PostgreSQL(보통 1). 그만큼shmmni) 또는 프로세스 당 (SHMSEG)는 문제가되지 않는 한 문제를 일으키지 않을 것입니다 귀하의 시스템은 제로로 설정되어 있습니다.
PostgreSQL하나를 사용합니다 허용 된 연결 당 세마포 (max_connections) Autovacuum 작업자 프로세스 허용 (autovacuum_max_workers), 16 세트에서. 그러한 각 세트에는 17 번째 세마포도가 포함됩니다."매직 번호", to 다른 사람이 사용하는 세마포어 세트와 충돌을 감지하십시오SEMMNS적어도만큼 높습니다.max_connectionsplusautovacuum_max_workers더하기 하나 16 개의 허용 연결과 작업자마다 추가표 17-1). 그만큼SEMMNI한도를 결정합니다 시스템에 존재할 수있는 세마포어 세트 수에CEIL ((Max_Connections + Autovacuum_Max_Workers) / 16). 허용 연결 수를 낮추는 것은 a입니다남은 공간이 없습니다 장치, 함수에서Semget
.
경우에 따라 증가해야 할 수도 있습니다SEMMAP최소한 순서에 있어야SEMMNS. 이 매개 변수는
theSEMMSL매개 변수 세트에 몇 개의 세마포르가있을 수 있는지 결정하고PostgreSQL.
관련된 다양한 기타 설정"세마포어 undo":SEMMNU및Semume, are 걱정하지 않음PostgreSQL.
적어도 버전 5.1에서 필요하지 않아야합니다. 그러한 매개 변수에 대한 특수 구성을 수행하려면Shmmax, 이것이 나타나는 것처럼 모든 메모리가 공유대로 사용할 수 있도록 구성DB/2.
그러나 글로벌 수정이 필요할 수 있습니다ulimit정보/etc/security/limits, 기본값은 하드입니다 파일 크기 제한 (fsize) 및 파일 번호 (nofiles) 너무 낮을 수 있습니다.
공유 메모리.기본적으로 4MB 만 공유 메모리가 지원됩니다.
옵션 "shmall = 8192"옵션 "shmmax = \ (shmall*page_size \)"
Shmall4 kb로 측정됩니다 페이지, 그래서 1024의 값은 4MB의 공유를 나타냅니다.kernel_virtual_mb위 기본248. 모든 것이 변경되면
4.0 및 이전 릴리스를 실행하는 사람들의 경우bpatchsysptsize현재 커널의 값. 부팅 시간에 동적으로 계산됩니다.
$ bpatch -r sysptsize 0x9 = 9
다음, 추가sysptsizeAS a 범퍼카 토토 구성 파일의 하드 코드 값.bpatch. 추가 4MB마다 1을 추가하십시오
옵션 "sysptsize = 16"
sysptsize변경할 수 없습니다 에 의해sysctl.
semaphores.아마 원할 것입니다 세마포르의 수를 늘리십시오.PostgreSQL연결. 범퍼카 토토에서 원하는 값을 설정하십시오
옵션 "semmni = 40"옵션 "SEMMNS = 240"
기본 설정은 소형에만 적합합니다 설치 (예 : 기본값ShmmaxIS 32 MB). 변경할 수 있습니다sysctl또는로더인터페이스. 다음sysctl:
$ sysctl -w kern.ipc.shmall = 32768 $ sysctl -w kern.ipc.shmmax = 134217728 $ sysctl -w kern.ipc.semmap = 256
이러한 설정이 재부팅을 통해 지속되도록하려면/etc/sysctl.conf.
나머지 세마포어 설정은 읽기 전용입니다 처럼sysctl관련이 있지만 가능합니다 를 사용하여 부팅하기 전에 변경됩니다.로더프롬프트 :
(로더) set kern.ipc.semmni = 256 (로더) SET KERN.IPC.SEMMNS = 512 (로더) set kern.ipc.semmnu = 256
마찬가지로 이들은 재부팅 사이에 저장 될 수 있습니다/boot/loader.conf.
kernel을 고정하도록 구성 할 수도 있습니다. RAM에 메모리를 공유하고 페이징되는 것을 방지합니다.sysctl설정kern.ipc.shm_use_phys.
활성화하여 freebsd 교도소에서 달리는 경우sysctl'ssecurity.jail.sysvipc_allowed, PostmasterS가 실행 중입니다 다른 교도소는 다른 운영에 의해 운영되어야합니다
freebsd버전 4.0이 작동하기 전에OpenBSD(아래 참조).
innetbsd5.0 및 나중에 IPC 매개 변수는를 사용하여 조정할 수 있습니다.sysctl, 예 :
$ sysctl -W kern.ipc.shmmax = 16777216
이러한 설정이 재부팅을 통해 지속되도록하려면/etc/sysctl.conf.
kernel을 고정하도록 구성 할 수도 있습니다. RAM에 메모리를 공유하고 페이징되는 것을 방지합니다.sysctl설정kern.ipc.shm_use_phys.
netbsd이전 버전 5.0 작업OpenBSD(아래 참조). 매개 변수를 설정 해야하는 경우를 제외하고 키워드옵션not옵션.
옵션SYSVSHM및SYSVSEM언제 커널이 컴파일됩니다.Shmmaxpgs(페이지). 그만큼
옵션 sysvshm옵션 shmmaxpgs = 4096
kernel을 고정하도록 구성 할 수도 있습니다. RAM에 메모리를 공유하고 페이징되는 것을 방지합니다.sysctl설정kern.ipc.shm_use_phys.
기본 설정은 정상으로 충분한 경향이 있습니다 설치.hp-ux10, 공장 기본값SEMMNS는 128이며 너무 낮을 수 있습니다 더 큰 데이터베이스 사이트.
IPC매개 변수는 할 수 있습니다 에서 설정해야합니다.시스템 범퍼카 토토 범퍼카 토토자 (SAM) 아래범퍼카 토토 구성-구성 가능한 매개 변수. 때리다새 범퍼카 토토 만들기언제 당신은 끝났습니다.
기본 최대 세그먼트 크기는 32MB입니다. 작은 경우에만 적합PostgreSQL설치. 하지만,sysctl인터페이스. 예를 들어, 허용합니다
$ sysctl -w kernel.shmmax = 134217728 $ sysctl -w kernel.shmall = 2097152
또한 이러한 설정은 그 사이에 저장 될 수 있습니다 재부팅/etc/sysctl.conf.
이전 배포판이 없을 수 있습니다sysctl프로그램이지만 동등한 변경이 가능합니다 조작하여 만들어 져야/Proc파일 시스템 :
$ echo 134217728/proc/sys/kernel/shmmax $ echo 2097152/proc/sys/kernel/shmall
OS X 10.2 이상에서 파일 편집/System/Library/StartUpitems/SystemTuning/SystemTuning그리고 다음 명령에서 값을 변경하십시오.
sysctl -w kern.sysv.shmmaxsysctl -w kern.sysv.shmin
OS X 10.3 이상 에서이 명령은 이동되었습니다. 에게/etc/rc편집해야합니다 거기./etc/rcIS 일반적으로 OS X 업데이트 (예 : 10.3.6 ~
OS X 10.3.9 이상에서 편집 대신/etc/rc파일을 만들 수 있습니다 이름/etc/sysctl.conf, 다음과 같은 가변 할당 포함
kern.sysv.shmmax = 4194304kern.sysv.shmmin = 1
이 방법은 편집보다 낫습니다/etc/rc변경 사항이 있기 때문입니다 시스템 업데이트에 걸쳐 보존됩니다.모두 5공유 메모리 매개 변수는에서 설정해야합니다./etc/sysctl.conf, 그렇지 않으면 값이 될 것입니다 무시.
최근 OS X 릴리스가 시도한 시도를 무시한다고 조심하십시오. 세트Shmmax그렇지 않은 값으로 4096의 정확한 배수.
Shmall4 KB로 측정됩니다 이 플랫폼의 페이지.
모든 OS X 버전에서는 다시 부팅해야합니다. 공유 메모리 매개 변수의 변경이 적용됩니다.
기본 구성에서는 512kb의 공유 만 공유했습니다 메모리 자격이 허용됩니다./etc/conf/cf.d. 전류를 표시합니다Shmmax, run :
./configure -y shmmax
새 값을 설정하려면Shmmax, run :
./configure shmmax =value
여기서value새로운 것입니다 사용하려는 값 (바이트).Shmmax, 범퍼카 토토을 재건 :
./link_unix
및 재부팅.
적어도 버전 2.6에서 기본 최대 크기의 a. 공유 메모리 세그먼트는 너무 낮습니다PostgreSQL. 관련 설정/etc/system, 예를 들어:
SET SHMSYS : SHMINFO_SHMMAX = 0X2000000SHMSS를 설정하십시오 : SHMINFO_SHMMIN = 1
적용 할 변경 사항을 재부팅해야합니다.
참조또는공유 메모리에 대한 정보Solaris.
onunixware7, the 공유 메모리 세그먼트의 최대 크기는 512kb입니다.Shmmax, run :
/etc/conf/bin/idtune -g shmmax
현재, 기본값, 최소 및 최대 값.Shmmax, run :
/etc/conf/bin/idtune shmmaxvalue
여기서value새로운 것입니다 사용하려는 값 (바이트).Shmmax, 범퍼카 토토을 재건 :
/etc/conf/bin/idbuild -B
및 재부팅.
표 17-2. 영향을 미치는 구성 매개 변수PostgreSQL의 공유 메모리 용법
이름 | 대략적인 승수 (증분 당 바이트) 8.3 |
---|---|
max_connections | 1800 + 270 * max_locks_per_transaction |
autovacuum_max_workers | 1800 + 270 * max_locks_per_transaction |
max_prepared_transactions | 770 + 270 * max_locks_per_transaction |
shared_buffers | 8400 (8 KB 가정blcksz) |
Wal_buffers | 8200 (8 KB 가정XLOG_BLCKSZ) |
max_fsm_relations | 70 |
max_fsm_pages | 6 |
고정 공간 요구 사항 | 770 KB |
유닉스와 같은 운영 체제는 다양한 종류의 종류를 시행합니다 귀하의 운영을 방해 할 수있는 범퍼카 토토 제한PostgreSQL서버. 의"하드"및 a"소프트"제한. 소프트 한계는 실제로입니다setRlimit
이 매개 변수를 설정합니다.ulimit(Bourne Shells) 또는Limit (CSH) IS 명령 줄에서 범퍼카 토토 제한을 제어하는 데 사용됩니다./etc/login.conf다양한 자원을 제어합니다 로그인 중에 설정된 제한.MaxProc, OpenFiles및DataSize. 예를 들어:
기본값 : \...
(-cur는 소프트 한계입니다. 부록-max하드 제한을 설정하려면)
범퍼카 토토은 일부에 대한 시스템 전체 제한을 가질 수 있습니다 자원.
onLinux /proc/sys/fs/file-max범퍼카 토토이 지원할 최대의 열린 파일 수./etc/sysctl.conf. 최대 한계/usr/src/linux/documentation/proc.txt더 많은 정보.
thePostgreSQL서버 사용 연결 당 하나의 프로세스가 있으므로 최소한
열기 파일의 공장 기본 제한이 종종 설정됩니다"사회적으로 친절한"그 가치 많은 사용자가 사용하지 않고 기계에 공존 할 수 있습니다.
동전의 반대편에서 일부 시스템은 개인을 허용합니다. 많은 수의 파일을 열기위한 프로세스;PostgreSQL'smax_files_per_process개방형 소비를 제한하기위한 구성 매개 변수 파일.
Linux 2.4 이상에서 기본 가상 메모리 동작 최적이 아닙니다PostgreSQL. 범퍼카 토토이 메모리를 구현하는 방식 때문에PostgreSQL서버 (마스터 서버 프로세스) 다른 프로세스의 메모리 요구로 인해
이런 일이 발생하면 보이는 커널 메시지가 표시됩니다. 이와 같이 (시스템 문서 및 구성을 참조하십시오
기억 부족 : 죽인 프로세스 12345 (Postgres).
이것은임을 나타냅니다.Postgres메모리 압력으로 인해 프로세스가 종료되었습니다. 하지만PostgreSQL다시 시작.
이 문제를 피하는 한 가지 방법은 실행하는 것입니다PostgreSQL당신이 할 수있는 기계에서 다른 프로세스가 기계를 실행하지 않을 것입니다.
Linux 2.6 이상에서 추가 측정은 수정하는 것입니다. 커널의 행동은 그렇지 않을 것입니다"Overcommit"메모리. 이 설정은 그렇지만Oom Killer완전히 호출되는 것입니다 기회를 크게 낮추므로sysctl:
sysctl -w vm.overcommit_memory = 2
또는 동등한 항목 배치/etc/sysctl.conf. 수정하고 싶을 수도 있습니다vm.overcommit_ratio. 자세한 내용은 커널을 참조하십시오Documentation/VM/Overcommit-Accounting.
일부 공급 업체의 Linux 2.4 커널은 조기에있는 것으로보고되었습니다. 2.6 오버 커미트 버전sysctl매개 변수. 그러나 설정vm.overcommit_memory관련 코드가 없으면 상황이 나쁘지 않습니다.vm_enough_memory
파일에서mm/mmap.c) 지원되는 내용을 확인하려면 2.4 설치로 이것을 시도하기 전에 복사하십시오.오버 커미트 계정문서화 파일not기능이 있습니다.