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

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

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

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

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

2 ответа

Решение

Для всех систем 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

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

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

Другие вопросы по тегам