Высокая нагрузка на CPU в Postgres
Проблемы с CPU в Postgres часто оказываются следствием неоптимальных планов запросов, промахов кэша или конкуренции за диск, маскирующейся под чистую вычислительную нагрузку.
Common symptoms
- PID процесса postgres растёт при нагрузке чтения/записи
- Увеличивается задержка на эндпоинтах с большим количеством запросов
- CPU остаётся высоким во время отчётности или сканирования
Likely causes
- Последовательные сканирования или неоптимальные планы запросов
- Дисковые узкие места
- Недостаточно памяти для кэширования
- Нагрузка из-за большого числа подключений или рабочих процессов
Evidence to look for
Postgres отображается как процесс с наибольшим потреблением CPU
Растёт утилизация диска и время ожидания (await)
Нагрузка на CPU коррелирует с определёнными временными окнами выполнения запросов
What it usually means
Базы данных нередко выглядят ограниченными по CPU, хотя на самом деле страдают из-за проблем с хранилищем или неэффективных планов запросов.
What to do next
- 1Проанализируйте планы запросов и наиболее «горячие» запросы
- 2Проверьте эффективность buffer cache и наличие давления на память
- 3Перенесите хранилище на более быстрые носители, если диск перегружен
See what's causing your CPU
cpum.ai turns CPU, process, disk, and memory signals into plain-English explanations with evidence.
Open cpum.ai