Вход на сайт

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

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

Каждые пять минут высоконагруженная база данных в PostgreSQL словно проваливается ...

Дата публикации: 29-09-2026 03:15:06

Каждые пять минут высоконагруженная база данных в PostgreSQL словно проваливается в латентную яму - транзакции замирают на три-семь секунд, соединения висят в статусе `LWLock:WALWriteLock` или `Checkpointer`, а p99 метрики улетают в космос. Причина кроется в дефолтных настройках механизма checkpoint, которые созданы для того, чтобы база успешно завелась на ноутбуке с четырьмя гигабайтами памяти, а не для работы в production на NVMe массивах.
По умолчанию параметр `max_wal_size` выставлен в скромные 1 GB, а `checkpoint_completion_target` равен 0.5. Это значит, что как только объем сгенерированных WAL-файлов достигает гигабайта, фоновый процесс Checkpointer обязан сбросить все грязные страницы (dirty pages) из оперативной памяти на дисковые накопители ровно за половину отведенного времени. На SSD объемом в терабайт этот процесс превращается в лавинообразный сброс: контроллер диска захлебывается от интенсивного случайного I/O, утыкаясь в лимит IOPS, а ядро Linux начинает агрессивно сбрасывать кеш через `pdflush` или `writeback`. Наблюдается классический эффект шторма записи, когда пропускная способность дисковой подсистемы падает до нуля.
Чтобы убрать эти микрофризы, необходимо растянуть процесс сброса во времени и дать ядру Linux правильные инструкции через `sysctl`. Первым шагом в конфигурационном файле `postgresql.conf` увеличивается `max_wal_size` до 64 GB или даже 128 GB, если объем оперативной памяти сервера превышает 128 GB. Это увеличивает интервал между чекпоинтами и снижает частоту пиковых нагрузок. Вторым шагом параметр `checkpoint_completion_target` поднимается до 0.9. Это заставляет Checkpointer плавно размазывать запись грязных страниц почти на всю длину цикла чекпоинта, снижая мгновенный IOPS-напор на дисковую подсистему в два раза.
На уровне операционной системы Linux требуется скорректировать параметры `sysctl` для управления грязными страницами памяти. Параметр `vm.dirty_background_ratio` снижается с дефолтных 10% до 2-3%, а `vm.dirty_ratio` устанавливается на уровне 10%. Это заставляет ядро ОС начинать фоновый сброс страниц на диск гораздо раньше и небольшими порциями, предотвращая накопление критической массы несинхронизированных данных, которые впоследствии вызывают тяжелый дисковый затык. Дополнительно настраивается `vm.dirty_expire_centisecs` со значением около 3000, чтобы удерживать страницы в памяти не дольше тридцати секунд перед принудительным выталкиванием.
В результате подобных изменений пиковая нагрузка на дисковый контроллер сглаживается, графики latency выпрямляются в струнку, а базы данных перестают терять пакеты транзакций по тайм-аутам.
- Инфраструктурный аудит и калькулятор TCO кластера: @Personnel_run_bot (/tma)
- База знаний и разборы: ftops.space
- ftops.space | Run-As-Daemon Infrastructure

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

#Наименование новостиТональностьИнформативностьДата публикации
1Каждые пять минут нагруженный PostgreSQL кластер словно падает в обморок ...07.9828-09-2026
2Каждые 5 минут транзакции в PostgreSQL замирают на 3 - ...-111.8628-09-2026
3Каждые 5 минут транзакции в PostgreSQL замирают на 3-7 секунд. ...011.4328-09-2026
4Облачные провайдеры берут плату не за железо, а за лень ...014.9628-09-2026
5🧠 Великий жор ОЗУ: от космических свердержав до цифрового ожирения ...013.9528-09-2026
6Running OpenBao on Kubernetes with a CloudNativePG PostgreSQL backend010.7516-09-2026
7MM Change Slated For Linux 7.4 Yields +22904539.81% In One Metric, More Modest Wins In Others014.626-09-2026
8Intel Delivers A Significant Memory Hotplugging Performance Optimization For Linux04.5227-09-2026
9Recovering a Morpheus Appliance from MySQL InnoDB Corruption07.6426-09-2026

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