Добавления к инструкциям

Рекомендации по настройке PostgreSQL

max_connections

Этот параметр определяет максимальное количество одновременных подключений к серверу БД. Его значение должно определяться исходя из требований к системе(по умолчанию это обычно 100).

Параметр в большой степени влияет на использование ресурсов, увеличивать можно по мере необходимости — такой мерой будет получение ошибок от PostgreSQL «too many clients».

shared_buffers

Этот параметр определяет, сколько памяти будет выделяться postgres для кеширования данных. По умолчанию это обычно 128MB, для хорошей производительности обычно требуются гораздо большие значения. В практических условиях это значение следует установить в 15 - 25% от всей доступной оперативной памяти. При увеличении shared_buffers обычно требуется соответственно увеличить max_wal_size, чтобы растянуть процесс записи большого объёма новых или изменённых данных на более продолжительное время.

Pgtune устанавливает это значение для типа конфигурации dw так: total_mem / 4

effective_cache_size

Определяет представление планировщика об эффективном размере дискового кеша, доступном для одного запроса. Это представление влияет на оценку стоимости использования индекса; чем выше это значение, тем больше вероятность, что будет применяться сканирование по индексу, чем ниже, тем более вероятно, что будет выбрано последовательное сканирование.

Это значение следует устанавливать в 50% - 75% всей доступной оперативной памяти, в зависимости от того, сколько памяти доступно для системного кеша. Этот параметр не влияет на выделяемые ресурсы - это оценочная информация для планировщика.

Pgtune устанавливает значения для типа конфигурации dw так : total_mem * 3 / 4

work_mem

Задаёт объём памяти, который будет использоваться для внутренних операций сортировки и хеш-таблиц, прежде чем будут задействованы временные файлы на диске. Увеличение его позволяет выполнять эти операции в оперативной памяти, что гораздо более эффективно, чем на диске.

Параметр указывает, сколько памяти выделять на каждую подобную операцию.

Его значение стоит увеличивать, если у Вас большое количество памяти в распоряжении.

Pgtune устанавливает следующие значение для типа конфигурации dw так: (total_mem - shared_buffers) / (3 * max_connections) / (num_processors / 2) / 2

maintenance_work_mem

Задаёт максимальный объём памяти для операций обслуживания БД, в частности VACUUM, CREATE INDEX и ALTER TABLE ADD FOREIGN KEY. По умолчанию его значение — 64 мегабайта (64MB). Так как в один момент времени в сеансе может выполняться только одна такая операция, и обычно они не запускаются параллельно, это значение вполне может быть гораздо больше work_mem. Увеличение этого значения может привести к ускорению операций очистки и восстановления БД из копии.

Pgtune устанавливает это значение для типа конфигурации dw: total_mem / 8. Если больше 2GB, устанавливается 2GB.

wal_buffers

Объём разделяемой памяти, который будет использоваться для буферизации данных WAL, ещё не записанных на диск. Значение по умолчанию, равное -1, задаёт размер, равный 1/32 (около 3%) от shared_buffers, но не меньше, чем 64 КБ и не больше, чем размер одного сегмента WAL (обычно 16 МБ). Это значение можно задать вручную, если выбираемое автоматически слишком мало или велико, но при этом любое положительное число меньше 32 КБ будет восприниматься как 32 КБ. Этот параметр можно задать только при запуске сервера.

Pgtune устанавливает следующие значения для разных типов конфигурации:

wal_buffers = 3 * shared_buffers / 100
if wal_buffers > 16 * MB / KB:
  wal_buffers = 16 * MB / KB
if wal_buffers > 14 * MB / KB and wal_buffers < 16 * MB / KB:
  wal_buffers = 16 * MB / KB

Этот параметр стоит увеличивать в системах с большим количеством записей.

min_wal_size

Пока WAL занимает на диске меньше этого объёма, старые файлы WAL в контрольных точках всегда перерабатываются, а не удаляются. Это позволяет зарезервировать достаточно места для WAL, чтобы справиться с резкими скачками использования WAL, например, при выполнении больших пакетных заданий. Значение по умолчанию — 80 МБ. Этот параметр можно установить только в postgresql.conf или в командной строке

max_wal_size

Максимальный размер, до которого может вырастать WAL между автоматическими контрольными точками в WAL. Это мягкий предел; размер WAL может превышать max_wal_size при особых обстоятельствах, например, при высокой нагрузке, сбое в archive_command или при большом значении wal_keep_segments. Значение по умолчанию — 1 ГБ. Увеличение этого параметра может привести к увеличению времени, которое потребуется для восстановления после сбоя. Задать этот параметр можно только в postgresql.conf или в командной строке при запуске сервера.

checkpoint_completion_target

Задаёт целевое время для завершения процедуры контрольной точки, как коэффициент для общего времени между контрольными точками. По умолчанию это значение равно 0.5. Задать этот параметр можно только в postgresql.conf или в командной строке при запуске сервера.

Pgtune устанавливает следующие значения для типа конфигурации dw: 0.9

default_statistics_target

Устанавливает целевое ограничение статистики по умолчанию, распространяющееся на столбцы, для которых командой ALTER TABLE SET STATISTICS не заданы отдельные ограничения. Чем больше установленное значение, тем больше времени требуется для выполнения ANALYZE, но тем выше может быть качество оценок планировщика. Значение этого параметра по умолчанию — 100.

Pgtune устанавливает следующие значения для конфигурации dw: 500

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

Вариант решения проблемы: увеличить количество записей, просматриваемых при сборе статистики по таблицам до 10000:

default_statistics_target = 10000

random_page_cost

Задаёт приблизительную стоимость чтения одной произвольной страницы с диска. Значение по умолчанию равно 4.0. В случе использования твердотельных накопителей (SSD) для БД параметр можно установить равным 1, что может значительно ускорить некоторые запросы.

Параметры конфигурации Apache для лимитов размера длины строки запроса и заголовка

Для того, чтобы не возникала ошибка «Request-URI Too Long» при обработке запросов Apache, в конфигурационные файлы Apache для виртуального хоста приложения добавлены директивы, увеличивающие лимит для максимального размера запроса в строке и максимального размера поля заголовка:

LimitRequestLine 16384
LimitRequestFieldSize 16384

Значение для этих параметров по умолчанию - 8190.

Это значения в конфигурационных файлах можно увеличивать при повторном возникновении приведенной выше ошибки.

Примечание: в описании директив в докуметации для Apache приведено предупреждение о том, что «при использовании виртуальных хостов на основе имен, значение данных параметров берутся из конфигурации виртуального хоста по умолчанию, первого в списке, который лучше всего соответствует текущей комбинации IP-адреса и порта».