Найти в Дзене
66 подписчиков

--ОПТИМИЗАЦИЯ НАСТРОЕК СУБД и ОС (PG_EXPECTO + DeepSeek)


Увеличить shared_buffers (до 2–2.5 GB, учитывая 7.5 GB RAM), чтобы больше данных помещалось в кэш.
Увеличить max_wal_size (например, до 4–5 GB), чтобы сгладить пики записи.
Увеличить checkpoint_timeout (до 20–30 мин) и проверить checkpoint_completion_target (0.9).
Увеличить bgwriter_delay (например, 100–150 мс) и bgwriter_lru_maxpages, чтобы сгладить сброс грязных страниц.

bgwriter_delay – увеличить с 54 мс до 100 мс.
bgwriter_lru_maxpages – увеличить с 515 до 1000.
bgwriter_lru_multiplier – рекомендуется снизить с 7.0 до 4.0–5.0.

ALTER SYSTEM SET shared_buffers = '3GB';
ALTER SYSTEM SET max_wal_size = '5GB';
ALTER SYSTEM SET checkpoint_timeout ='30min';
ALTER SYSTEM SET bgwriter_delay = '100ms';
ALTER SYSTEM SET bgwriter_lru_maxpages = 1000;
ALTER SYSTEM SET bgwriter_lru_multiplier = 4 ;

postgres=# ALTER SYSTEM SET shared_buffers = '3GB';
ALTER SYSTEM
postgres=# ALTER SYSTEM SET max_wal_size = '5GB';
ALTER SYSTEM
postgres=# ALTER SYSTEM SET checkpoint_timeout ='30min';
ALTER SYSTEM
postgres=# ALTER SYSTEM SET bgwriter_delay = '100ms';
ALTER SYSTEM
postgres=# ALTER SYSTEM SET bgwriter_lru_maxpages = 1000;
ALTER SYSTEM
postgres=# ALTER SYSTEM SET bgwriter_lru_multiplier = 4 ;
ALTER SYSTEM

pg_ctl restart -D /data/pg_data
$ pg_ctl restart -D /data/pg_data
waiting for server to shut down.... done
server stopped
waiting for server to start....2026-03-06 09:45:04.692 MSK| | | | | 990478| 00000| СООБЩЕНИЕ: Start CFS version 0.55 supported compression algorithms pglz,zlib,lz4,zstd encryption disabled GC enabled
2026-03-06 09:45:04.700 MSK| | | | | 990478| 00000| СООБЩЕНИЕ: передача вывода в протокол процессу сбора протоколов
2026-03-06 09:45:04.700 MSK| | | | | 990478| 00000| ПОДСКАЗКА: В дальнейшем протоколы будут выводиться в каталог "/log/pg_log".
 done
server started

show shared_buffers;
show max_wal_size ;
show checkpoint_timeout;
show bgwriter_delay;
show bgwriter_lru_maxpages;
show bgwriter_lru_multiplier ;

postgres=# show shared_buffers;
 shared_buffers
----------------
 3GB
(1 row)

postgres=# show max_wal_size ;
 max_wal_size
--------------
 5GB
(1 row)

postgres=# show checkpoint_timeout;
 checkpoint_timeout
--------------------
 30min
(1 row)

postgres=# show bgwriter_delay;
 bgwriter_delay
----------------
 100ms
(1 row)

postgres=# show bgwriter_lru_maxpages;
 bgwriter_lru_maxpages
-----------------------
 1000
(1 row)

postgres=# show bgwriter_lru_multiplier ;
 bgwriter_lru_multiplier
-------------------------
 4
(1 row)

Уменьшить vm.dirty_background_ratio до 2–3% (сейчас 10%).
Уменьшить vm.dirty_ratio до 10–15% (сейчас 30%).
Уменьшить vm.dirty_writeback_centisecs до 200–300 (сейчас 500) для более частого пробуждения flusher-нитей

sysctl -w vm.dirty_background_ratio=2
sysctl -w vm.dirty_ratio=10
sysctl -w vm.dirty_writeback_centisecs=200

# sysctl -w vm.dirty_background_ratio=2
vm.dirty_background_ratio = 2
# sysctl -w vm.dirty_ratio=10
vm.dirty_ratio = 10
# sysctl -w vm.dirty_writeback_centisecs=200
vm.dirty_writeback_centisecs = 200
#
2 минуты