Java-процесс: 100% CPU — решение
Java-процесс, постоянно нагружающий CPU, может быть вызван кодом, GC или потоками. Рассматривать все эти случаи как одну проблему — значит тратить время впустую.
Common symptoms
- Один процесс JVM полностью загружает CPU
- Пропускная способность падает, а задержки растут
- Перезапуски временно уменьшают проблему
Likely causes
- Горячие методы
- Избыточные циклы GC
- Конкуренция потоков
Evidence to look for
Стабильно высокая загрузка CPU в одном процессе JVM
Корреляция с участками кода с интенсивными выделениями памяти
Профилирование показывает сосредоточенные стеки вызовов
What it usually means
Нужны доказательства, прежде чем решать, что настраивать: код, GC или параллелизм.
What to do next
- 1Соберите данные по CPU и потокам одновременно
- 2Ищите повторяющиеся горячие точки в стеках вызовов
- 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