Найти в Дзене
Postgres DBA

Новая конфигурация СУБД и ОС - рекомендованная 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 po

Увеличить 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

#