Производительность Postgresql - настройка SHMMAX и SHMALL

9

Я читал почти все, что есть в Интернете об улучшении производительности postgres, но «правильные» значения для SHMMAX и SHMALL все еще ускользают от меня.

Консенсус представляется следующим: SHMMAX = total_memory / 4 и SHMALL = total_memory / 2 - безопасные начальные значения.

Тем не менее, SHMALL может быть измерен в страницах или байтах, и я не могу найти никакой информации о том, что используется в Ubuntu.

Использует ли Ubuntu (или, в более общем случае, Debian) страницы или байты для SHMALL?

Энрико
источник

Ответы:

11

Для всех систем Linux, которые я использовал SHMALL, измеряется в страницах и SHMMAXизмеряется в байтах. Я думаю, что вы можете проверить свою систему с помощью ipcsкоманды, которая всегда преобразует указанные выше параметры в килобайтах во время вывода, и сравнить ее со 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

ШМАЛ: 8388608 * 1024/4096 = 2097152

Александр Сережин
источник
2

Эти переменные измеряются в байтах, как указано в документации. Я думаю, что более важно взглянуть на параметры конфигурации postgresql. Вам нужно посмотреть на значения SHMALL / SHMMAX, когда это необходимо. Например, если вы хотите увеличить максимальное количество подключений, вам может потребоваться увеличить эти ограничения.

Настройка сервера базы данных зависит от вашей схемы использования, такой как количество одновременных подключений и размер базы данных. Увеличение параметра конфигурации не всегда хорошо.

Халед
источник
2
SHMMAX необходимо увеличить, чтобы увеличить shared_buffers, что является самым низким результатом зависания, когда речь идет о производительности postgresql. Можете ли вы добавить ссылку на документацию?
Энрико
Вы можете посмотреть на manpages.ubuntu.com/manpages/jaunty/man2/shmget.2.html
Халед