🛠️ Storage latency растёт рывками? Проверьте checkpoints PostgreSQL

Для PostgreSQL 18:

SELECT num_timed, num_requested, num_done, write_time, sync_time, buffers_written, stats_reset FROM pg_stat_checkpointer;

Важный нюанс PG18:

num_timed и num_requested могут учитывать как выполненные, так и пропущенные checkpoints.

Поэтому смотрите и num_done — число реально выполненных.

И обязательно учитывайте stats_reset.

Дальше:

SHOW checkpoint_timeout; SHOW max_wal_size; SHOW checkpoint_completion_target;

checkpoint_timeout не означает «checkpoint строго раз в N минут».

При интенсивной генерации WAL checkpoint может потребоваться раньше, а max_wal_size — soft limit.

Проверьте и WAL:

SELECT wal_bytes, stats_reset FROM pg_stat_wal;

Если WAL generation вырос, checkpoint profile тоже может измениться.

checkpoint_completion_target распределяет checkpoint I/O по времени.

Уменьшать его ради «быстрого checkpoint» обычно плохая идея: I/O становится более концентрированным.

Также смотрите:

— buffers_written; — write_time; — sync_time; — checkpoint_warning; — batch/write-heavy workload.

И не используйте CHECKPOINT как регулярное production-лечение.

Диагностика:

I/O spikes → checkpointer stats → timed/requested/done → WAL generation → settings → logs → workload

Сохраните набор метрик, который стоит проверить до изменения настроек checkpoint и WAL.

🔹🔹🔹🔹

🛠️ Storage latency растёт рывками? Проверьте checkpoints PostgreSQL
Для PostgreSQL 18:
SELECT
numtimed,
numrequested,
numdone,
writetime,
synctime,
bufferswritten,
statsreset
FROM pgstatcheckpointer;
... | Сетка — социальная сеть от hh.ru