Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

Каждые 5 минут транзакции в PostgreSQL замирают на 3 - ...

Дата публикации: 22-09-2026 13:17:53

Каждые 5 минут транзакции в PostgreSQL замирают на 3 - 7 секунд. Разбор кривого механизма сброса WAL на диск.
Производительность базы данных выглядит идеальной, пока нагрузка не упирается в дефолтный checkpoint в PostgreSQL. При стандартном значении `max_wal_size = 1GB` ядро базы начинает панически сбрасывать грязные страницы (dirty pages) на накопитель, как только исчерпывается этот лимит или истекает таймер `checkpoint_timeout = 5min`. В этот момент дисковая подсистема получает лавинообразную запись, а IOPS упирается в потолок.
Результат - классический микрофриз. Очередь запросов растет, клиенты получают таймауты, а метрика `checkpoint_write_time` в системных представлениях улетает в космос. Проблема усугубляется тем, что фоновый процесс сброса (`bgwriter`) настроен слишком консервативно и перекладывает всю тяжелую работу на сам чекпоинт.
Чтобы избавиться от фризов, нужно заставить базу размазывать нагрузку на запись во времени, а не устраивать дисковый шторм раз в пять минут.
1. Увеличиваем объем WAL-файлов до адекватных значений под вашу емкость дисков:
`max_wal_size = '16GB'`
`min_wal_size = '2GB'`
2. Растягиваем интервал между чекпоинтами, снижая пиковую интенсивность записи:
`checkpoint_timeout = '30min'`
3. Управляем агрессивностью сброса через `checkpoint_completion_target`. Значение `0.9` означает, что PostgreSQL постарается равномерно распределить запись 90% времени от заданного таймаута:
`checkpoint_completion_target = 0.9`
4. Тюним фоновый писатель (`bgwriter`), чтобы он зачищал буферы заранее:
`bgwriter_delay = 20ms`
`bgwriter_lru_maxpages = 200`
`bgwriter_lru_multiplier = 3.0`
Мониторите ли вы поведение чекпоинтов через `pg_stat_bgwriter` или ваша инфраструктура до сих пор живет на дефолтах? Делитесь в комментариях.
- Инфраструктурный аудит и калькулятор TCO кластера: @Personnel_run_bot (/tma)
- База знаний и разборы: ftops.space
- ftops.space | Run-As-Daemon Infrastructure

Схожие новости

#Наименование новостиТональностьИнформативностьДата публикации
1Каждые 5 минут транзакции в PostgreSQL замирают на 3-7 секунд. ...-18.7721-09-2026
2[Перевод] Статистика PostgreSQL: почему запросы выполняются медленно07.7419-08-2026
3PostgreSQL 19 Beta 2 Released! 5716-07-2026
4Кто выгрузил платежи, или Пример расследования инцидента на аудите в Postgres Pro Enterprise0710-07-2026
5PostgreSQL для бэкендера: 10 фич, которыми мало пользуются, а зря5730-06-2026
6[Перевод] Нетипичные оптимизации в PostgreSQL, или Креативное ускорение запросов08.2102-03-2026
7Ваши тесты медленные не из-за базы данных. Я измерил09.615-06-2026
8The Real Operational Cost of Vacuuming in PostgreSQL010.708-02-2026
9Очередь задач на Postgres: SKIP LOCKED + lease/heartbeat + backpressure (практический опыт)012.4213-01-2026

Классификация: Мнения. Схожих патентов: 0. Схожих новостей: 9. Тональность: 0. Информативность: 9.34. Источник: vk.com.