Вход на сайт

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

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

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

Дата публикации: 21-09-2026 03:09:07

Каждые 5 минут транзакции в PostgreSQL замирают на 3-7 секунд. Это не магия и не «тяжелый запрос». Это классический Checkpoint Spike, вызванный дефолтными настройками, которые в 2024 году выглядят как диверсия против продакшена.
Когда база данных достигает `max_wal_size` или проходит интервал `checkpoint_timeout` (по умолчанию 5 минут), Postgres начинает агрессивный сброс dirty pages из оперативной памяти на диск. Проблема в том, что по дефолту он делает это максимально быстро, чтобы как можно скорее вернуться к штатной работе. В итоге IO-подсистема захлебывается, очередь записи (iowait) улетает в космос, а все пишущие транзакции встают в блокировку.
Как диагностировать? Смотрите логи: "checkpoint starting: time", а следом через пару секунд "checkpoint complete". Если между ними проходит больше пары секунд, вы теряете производительность.
Как лечить? Рецепт один - размазывание нагрузки.
1. Увеличиваем `max_wal_size`. Дефолтные 1GB - это смешно. Для современных NVMe накопителей ставьте 16GB, 32GB или даже 64GB. Больше WAL - реже чекпоинты, меньше суммарный IOPS на запись.
2. Настраиваем `checkpoint_completion_target`. Это самый важный параметр. По умолчанию он равен 0.5. Это значит, что Postgres пытается сбросить все dirty pages за 50% времени между чекпоинтами. Если интервал 5 минут, он будет "жарить" 2.5 минуты, а потом 2.5 минуты отдыхать. Ставьте 0.9. Тогда Postgres будет делать это плавно на протяжении почти всего интервала, не создавая пиковых нагрузок на диск.
3. Тюним `bgwriter`. Чтобы чекпоинт не был таким "грязным", заставьте `bgwriter` работать активнее в фоне. Параметры `bgwriter_delay` (200ms), `bgwriter_lru_maxpages` (400) и `bgwriter_lru_multiplier` (4.0) помогут выталкивать страницы на диск постепенно, пока нагрузка минимальна.
Что по деньгам? TCO кластера с неправильно настроенными чекпоинтами растет за счет необходимости покупки более дорогих IOPS-интенсивных дисков. Настройка WAL позволяет сэкономить до 20-30% бюджета на хранилище, переводя нагрузку из "пиковой" в "линейную".
Если ваша база данных держит интенсивный OLTP, не ждите, пока пользователи начнут жаловаться на лаги. Проверьте `checkpoint_completion_target` прямо сейчас.
- Инфраструктурный аудит и калькулятор TCO кластера: @Personnel_run_bot (/tma)
- База знаний и разборы: ftops.space
- ftops.space | Run-As-Daemon Infrastructure

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

#Наименование новостиТональностьИнформативностьДата публикации
1Postgresso 4 (89)013.1810-06-2026
2PostgreSQL для бэкендера: 10 фич, которыми мало пользуются, а зря5730-06-2026
3Кто выгрузил платежи, или Пример расследования инцидента на аудите в Postgres Pro Enterprise0710-07-2026
4Очередной разбор полетов в 03:00. Мониторинг Cilium показывает низкую загрузку ...09.2121-09-2026
5Linux наконец-то не тормозит или пятничный релакс013.1807-08-2026
6Поверхностный мониторинг облачных провайдеров привычно обвиняет приложение в утилизации ресурсов, ...07.9820-09-2026
7Как отговорить себя от написания своей ФС011.6409-08-2026
8Ingestion and query issues for logs, spans, traces in US07.5801-07-2026
9Span & Transaction ingestion delayed in DE06.9513-08-2026
10https://dzen.ru/a/anBP3WTg8Wn46JCl Народ часто спрашивает: «А на чём всё это крутить?». ...012.906-08-2026

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