PostgreSQL 성능-SHMMAX 및 SHMALL 조정


9

postgres 성능 향상에 대한 온라인의 모든 내용을 읽었지만 SHMMAX 및 SHMALL의 "올바른"값은 여전히 ​​나를 피합니다.

컨센서스는 SHMMAX = total_memory / 4이고 SHMALL = total_memory / 2는 안전한 시작 값입니다.

그러나 SHMALL은 페이지 또는 바이트 단위로 측정 할 수 있으며 Ubuntu에서 사용되는 정보를 찾을 수 없습니다.

우분투 (또는 일반적으로 데비안)는 SHMALL에 페이지 또는 바이트를 사용합니까?

답변:


11

내가 사용한 모든 Linux 시스템의 경우 SHMALL페이지 SHMMAX단위로 측정되며 바이트 단위로 측정됩니다. ipcs출력하는 동안 항상 위의 매개 변수를 KBytes로 변환하는 명령을 사용하여 시스템을 확인 하고 sysctl값 과 비교할 수 있다고 생각 합니다.

[aseryozhin@centos ~]$ ipcs -l

------ Shared Memory Limits --------
max number of segments = 4096               // SHMMNI   
max seg size (kbytes) = 524288              // SHMMAX
max total shared memory (kbytes) = 8388608  // SHMALL
min seg size (bytes) = 1

[aseryozhin@centos ~]$ sysctl -e kernel.shmmax
kernel.shmmax = 536870912

[aseryozhin@centos ~]$ sysctl -e kernel.shmall
kernel.shmall = 2097152

[aseryozhin@centos ~]$ getconf PAGE_SIZE
4096

SHMMAX : 524288 * 1024 = 536870912

SHMALL : 8388608 * 1024/4096 = 2097152


2

이러한 변수는 설명서에 명시된대로 바이트 단위로 측정됩니다. postgresql 구성 매개 변수를 보는 것이 더 중요하다고 생각합니다. 필요할 때 SHMALL / SHMMAX 값을 확인해야합니다. 예를 들어 최대 연결 수를 늘리려면 이러한 제한을 늘려야 할 수 있습니다.

데이터베이스 서버 조정은 동시 연결 수 및 데이터베이스 크기와 같은 사용 패턴에 따라 다릅니다. 구성 매개 변수를 늘리는 것이 항상 좋은 것은 아닙니다.


2
postgresql 성능과 관련하여 가장 낮은 성능 인 shared_buffers를 늘리려면 SHMMAX를 늘려야합니다. 설명서에 대한 링크를 추가 할 수 있습니까?
Enrico

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.