Настройка параметров ядра Linux для оптимизации PostgreSQL

     Оптимальная производительность PostgreSQL зависит от правильно определенных параметров операционной системы. Плохо настроенные параметры ядра ОС могут привести к снижению производительности сервера базы данных. Поэтому обязательно, чтобы эти параметры были настроены в соответствии с сервером базы данных и его рабочей нагрузкой. В этой статье мы обсудим некоторые важные параметры ядра Linux, которые могут повлиять на производительность сервера базы данных и способы их настройки.

                                                       SHMMAX / SHMALL

     SHMMAX — это параметр ядра, используемый для определения максимального размера одного сегмента разделяемой памяти (shared memory), который может выделить процесс Linux. До версии 9.2 PostgreSQL использовал System V (SysV), для которой требуется настройка SHMMAX. После 9.2 PostgreSQL переключился на разделяемую память POSIX. Так что теперь требуется меньше байтов разделяемой памяти System V.

     До версии 9.3 SHMMAX был наиболее важным параметром ядра. Значение SHMMAX задается в байтах.

     Аналогично, SHMALL — это еще один параметр ядра, используемый для определения общесистемного объема страниц разделяемой памяти (shared memory). Чтобы просмотреть текущие значения SHMMAX, SHMALL или SHMMIN, используйте команду ipcs.

     Использует System V IPC для выделения разделяемой памяти. Этот параметр является одним из наиболее важных параметров ядра. Всякий раз, когда вы получаете следующие сообщения об ошибках, это означает, что у вас более старая версия PostgreSQL и у вас очень низкое значение SHMMAX. Ожидается, что пользователи будут корректировать и увеличивать значение в соответствии с разделяемой памятью, которую они собираются использовать. 

                                    Понимание различий в определениях

Определение параметров SHMMAX/SHMALL немного отличается в Linux и MacOS X:

  • Linux: kernel.shmmax, kernel.shmall

  • MacOS X: kern.sysv.shmmax, kern.sysv.shmall

Linux-Wallpaper-27.jpg

Команда sysctl может быть использована для временного изменения значения

Вы можете настроить другие параметры для увеличения производительности, но улучшения будут минимальными и выгоды особой не получите. Мы должны помнить, что не все параметры относятся ко всем типам приложений. Некоторые приложения работают лучше, когда мы настраиваем некоторые параметры, а некоторые — нет. Вы должны найти правильный баланс между конфигурациями этих параметров для ожидаемой рабочей нагрузки и типа приложения, а также при настройке необходимо учитывать поведение ОС. Настроить параметры ядра не так просто, как настроить параметры базы данных: здесь сложнее давать свои рекомендации.


Другие новости и проекты
Смотреть все