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

3.5. 토토 결과 리소스 관리

토토 결과설치는 다양한 운영 체제 자원을 신속하게 도달 할 수 있습니다 제한. (일부 시스템에서는 공장 불이행이 너무 낮아서 당신은 정말로 필요하지 않습니다"큰"설치.) 이런 종류의 문제가 발생한 경우 계속 읽으십시오.

3.5.1. 공유 기억과 세마포어

공유 메모리 및 세마포어는 총체적으로라고합니다."System V IPC"(함께 관련이없는 메시지 대기열토토 결과). 거의 모든 현대 운영 시스템은 이러한 기능을 제공하지만 모든 기능을 제공하는 것은 아닙니다. 기본적으로 켜거나 충분히 크기를 조정하십시오 BSD 유산으로. (QNXand11851_11857포트,토토 결과자체 교체품을 제공합니다 이 시설의 구현.)

이러한 시설의 완전한 부족은 일반적으로 나타납니다 에 의해불법 시스템 호출오류 우체국 마스터 시작시. 이 경우에는 할 일이 없습니다 그러나 토토 결과을 재구성하려면 -토토 결과그들 없이는 작동하지 않습니다.

언제토토 결과하나를 초과합니다 의 다양한 단단한 한계 중IPC우체국 장의 자원 시작을 거부하고 약간의 유익한 것을 떠나야합니다. 어떤 문제가 발생했는지에 대한 오류 메시지와 무엇을 그것에 대해 완료해야합니다. (참조섹션 3.3.1.) 관련 토토 결과 매개 변수의 이름이 지정되었습니다 지속적으로 다른 시스템에 걸쳐;표 3-2주는 개요. 그러나이를 설정하는 방법은 다양합니다. 일부 플랫폼에 대한 제안은 다음과 같습니다. 경고하십시오 최소한 컴퓨터를 재부팅 해야하는 경우가 종종 있습니다. 이 설정을 변경하기 위해 커널을 다시 컴파일하더라도.

표 3-2.시스템 다섯 IPC매개 변수

이름 설명 합리적인 값
Shmmax 공유 메모리 세그먼트의 최대 크기 (바이트) 250KB + 8.2KB *shared_buffers+ 14.2kb *max_connection또는 Infinity
Shmmin 공유 메모리 세그먼트의 최소 크기 (바이트) 1
Shmall 이용 가능한 공유 메모리의 총 금액 (바이트 또는 페이지) 바이트 인 경우Shmmax; if pages,CEIL (shmmax/page_size)
SHMSEG 최대 공유 메모리 세그먼트 당 프로세스 1 세그먼트 만 필요하지만 기본값은 많이 있습니다. 더 높은
shmmni 공유 메모리 세그먼트의 최대 수 시스템 전체 LikeSHMSEG객실 다른 응용 프로그램
SEMMNI 최대 세마포어 식별자 수 (즉, 세트) = CEIL (max_connections / 16)
SEMMNS 시스템 전체의 세마포르의 최대 수 CEIL (Max_Connections / 16) * 17+ 다른 응용 프로그램의 객실
SEMMSL 세트 당 최대 세부 수 = 17
SEMMAP 세마포어 맵의 항목 수 텍스트 참조
SEMVMX 세마포어의 최대 값 = 255 (기본값은 종종 32767이며 변경하지 마십시오 요청하지 않는 한.)

가장 중요한 공유 메모리 매개 변수는Shmmax, 공유 메모리 세그먼트가 할 수있는 최대 크기 가지다. 에서 오류 메시지를 받으면SHMGET의 선을 따라잘못된 인수그런 다음 가능합니다 이 한도는 초과되었습니다. 필요한 공유의 크기 메모리 세그먼트는 요청 된 수에 따라 다릅니다 버퍼 (-B옵션) 및 숫자 허용 연결 (-n옵션), 전자는 지배적 인 항목이지만. (그러므로 당신은 할 수 있습니다. 임시 솔루션으로,이 설정을 낮추기 위해 실패.) 대략적인 근사치로서 당신은 추정 할 수 있습니다 버퍼의 수로 필요한 세그먼트 크기는 블록의 시간입니다. 크기 (기본적으로 8kb) + 충분한 오버 헤드 (적어도 절반 이상 메가 바이트). 당신이 얻을 수있는 오류 메시지는 다음에 포함됩니다 할당 실패 요청의 크기.

문제를 일으킬 가능성이 적은 것은 공유의 최소 크기입니다. 메모리 세그먼트 (Shmmin) 최대 약 256kb의 어딘가에 있어야토토 결과(보통 1). 그만큼 최대 세그먼트 수 시스템 전체 (shmmni) 또는 프로세스 당 (SHMSEG)는 귀하가 아닌 한 문제를 일으키지 않아야합니다 시스템에는 0으로 설정되어 있습니다. 일부 시스템은 또한 제한이 있습니다 시스템에서 공유 메모리의 총량; 참조 아래 플랫폼 별 지침.

토토 결과하나를 사용합니다 허용 된 연결 당 세마포 (-n옵션), 16 세트 또한 17 번째 세마포어가 포함되어 있습니다."매직 번호", 충돌을 감지합니다 다른 응용 프로그램에서 사용하는 세마포어 세트. 최대 숫자 시스템의 세마포어는에 의해 설정됩니다.SEMMNS, 결과적으로 적어도 그와 같아야합니다 연결 설정으로 높음 16마다 추가 허용 연결 (공식 참조표 3-2). 그만큼 매개 변수SEMMNIlimit on the number of semaphore sets that can exist on the 한 번에 시스템. 따라서이 매개 변수는 적어도CEIL (Max_Connections / 16). 저하 허용 연결 수는 임시 해결 방법입니다. 일반적으로 혼란스럽게 말하는 실패"남은 공간이 없습니다 장치", 함수에서semget ().

경우에 따라 필요한 경우에도 필요할 수도 있습니다. 증가하다SEMMAP적어도 켜져 있습니다 순서SEMMNS. 이것 매개 변수는 세마포어 리소스 맵의 크기를 정의합니다. 사용 가능한 세마포어의 각각의 연속 블록에는 필요가 필요합니다 기입. 세마포어 세트가 풀리면 Freed Block에 인접한 기존 항목 또는 새 맵 항목에 등록되었습니다. 지도가 가득 차면 해방됩니다 세마포어는 손실됩니다 (재부팅 될 때까지). 의 조각화 따라서 세마포 공간은 시간이 지남에 따라 줄어들 수 있습니다 필요한 것보다 구할 수 있습니다.

theSEMMSL매개 변수 세트에 몇 개의 세마포르가있을 수 있는지 결정하고 최소 17 for토토 결과.

관련된 다양한 기타 설정"세마포어 undo":SEMMNUandSemume, 걱정하지 않습니다토토 결과.

BSD/OS

공유 메모리.기본적으로 4MB 만 공유 메모리가 지원됩니다. 공유 한 것을 명심하십시오 메모리는 pagable이 아닙니다. RAM에 잠겨 있습니다. 에게 지원하는 공유 버퍼의 수를 늘리십시오 우체국 장, 커널에 다음을 추가하십시오 구성 파일. 에이Shmall값 1024는 4MB를 나타냅니다 공유 메모리. 다음은 최대 값을 증가시킵니다 공유 메모리 영역으로 32MB :

옵션 "shmall = 8192"
옵션 "shmmax = \ (shmall*page_size \)"

4.1 이상을 실행하는 사람들의 경우 위를 만드십시오. 변경하고 커널을 다시 컴파일하고 재부팅합니다. 그것들을 위해 이전 릴리스 실행, 사용bpatch찾기sysptsize현재 커널의 값. 부팅 시간에 동적으로 계산됩니다.

$bpatch -r sysptsize
0x9 = 9

다음, 추가sysptsizeas 토토 결과 구성 파일의 하드 코드 값. 사용하여 찾은 값을 늘리십시오bpatch. 추가 4마다 1을 추가하십시오 당신이 원하는 공유 메모리의 MB.

옵션 "sysptsize = 16"

sysptsize할 수 없습니다 변경sysctl.

semaphores.세마포어 수. 기본적으로토토 결과할당 34 기본 시스템의 절반 이상인 세마포어입니다 60 세

토토 결과 구성에서 원하는 값을 설정합니다 파일, 예 :

옵션 "SEMMNI = 40"
옵션 "SEMMNS = 240"
옵션 "Semume = 40"
옵션 "semmnu = 120"
freebsd
netbsd
OpenBSD

옵션SYSVSHMSYSVSEM활성화해야합니다 커널이 컴파일 될 때. (그들은 기본적으로입니다.) 공유 메모리의 최대 크기는 옵션에 의해 결정됩니다Shmmaxpgs(페이지). 그만큼 다음은 다양한 것을 설정하는 방법의 예를 보여줍니다. 매개 변수 :

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

옵션 sysvsem
옵션 semmni = 256
옵션 SEMMNS = 512
옵션 semmnu = 256
옵션 semmap = 256

(onnetbsdandOpenBSD핵심 단어는입니다 실제로옵션Singular.)

hp-ux

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

IPC매개 변수는 할 수 있습니다 에서 설정해야합니다.시스템 관리 관리자(SAM) 아래토토 결과 구성-구성 가능한 매개 변수. 때리다24481_24502언제 당신은 끝났습니다.

Linux

기본 공유 메모리 제한 (둘 다ShmmaxShmall)는 2.2 토토 결과에서 32MB이지만 IT 에서 변경할 수 있습니다.Proc파일 시스템 (재부팅없이). 예를 들어, 128을 허용합니다 MB :

$ echo 134217728/proc/sys/kernel/shmall
$ echo 134217728/proc/sys/kernel/shmmax

이 명령을 스크립트에 넣을 수 있습니다. 부트 타임.

또는 사용할 수 있습니다sysctl, 사용 가능한 경우, 이러한 매개 변수를 제어합니다. 라는 파일을 찾으십시오./etc/sysctl.conf및 라인을 추가하십시오 다음과 같이 :

kernel.shmall = 134217728
kernel.shmmax = 134217728

이 파일은 일반적으로 부팅 시간에 처리되지만sysctl명시 적으로 나중에 전화합니다.

다른 매개 변수의 크기는 충분합니다 애플리케이션. 당신이 직접보고 싶다면/usr/src/linux/include/asm-xxx/shmparam.hand/usr/src/linux/include/linux/sem.h.

SCO OpenServer

기본 구성에서는 512kb의 공유 만 공유했습니다 메모리 자체 세그먼트가 허용되며, 이는 충분합니다-B 24 -N 12. 늘리려면 설정, 먼저 디렉토리 변경/etc/conf/cf.d. 전류를 표시합니다 의 가치Shmmax, 바이트, 달리다

./configure -y shmmax

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

./configure shmmax =value

여기서value새로운 것입니다 사용하려는 값 (바이트). 설정 후Shmmax, 재건 핵심

./link_unix

및 재부팅.

Solaris

적어도 버전 2.6에서 공유의 최대 크기 메모리 세그먼트가 너무 낮게 설정되어토토 결과. 관련 설정 변경할 수 있습니다/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 : //www.sunworld.com/swol-09-1997/swol-09-insidesolaris.html공유 메모리에 대한 정보Solaris.

unixware

onunixware7, the 공유 메모리 세그먼트의 최대 크기는 512kb입니다. 기본 구성. 이것은 충분합니다.-B 24 -N 12. 표시하려면 현재 값Shmmax, 달리다

/etc/conf/bin/idtune -g shmmax

현재, 기본값, 최소 및 바이트의 최대 값. 새로운 값을 설정하려면Shmmax, run :

/etc/conf/bin/idtune shmmaxvalue

어디value새로운 것입니다 사용하려는 값 (바이트). 설정 후Shmmax, 재건 핵심

/etc/conf/bin/idbuild -B

및 재부팅.

3.5.2. 자원 제한

유닉스와 같은 운영 체제는 다양한 종류의 종류를 시행합니다 귀하의 운영을 방해 할 수있는 자원 제한토토 결과서버. 의 중요성은 특히 프로세스 수의 한계입니다. 사용자 당, 프로세스 당 열린 파일 수 및 금액 프로세스에 사용할 수있는 메모리. 이들 각각은를 가지고 있습니다."하드"및 A"소프트"제한. 소프트 한계는 실제로입니다 계산하지만 사용자는 하드 제한까지 변경할 수 있습니다. 단단한 제한은 루트 사용자 만 변경할 수 있습니다. 시스템 부르다setRlimit이 매개 변수를 설정합니다. 쉘의 내장 명령ulimit(Bourne Shells) 또는Limit(CSH) IS 명령 줄에서 자원 제한을 제어하는 ​​데 사용됩니다. ~에 BSD 유래 시스템 파일/etc/login.conf값을 제어합니다 로그인시 다양한 리소스 제한이 설정됩니다. 보다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구성 매개 변수 열린 파일의 소비를 제한하려면