Как определить, какой процесс потребляет больше всего ресурсов на сервере?

«Как определить, какой процесс потребляет больше всего ресурсов на сервере?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для оперативного анализа нагрузки используются следующие утилиты:

1. top / htop (интерактивный мониторинг):

top
  • Shift+P — сортировка по использованию CPU.
  • Shift+M — сортировка по использованию памяти (RES).
  • htop предоставляет более удобный цветной интерфейс и навигацию.

2. ps (мгновенный снимок):

# Топ-5 процессов по CPU
ps aux --sort=-%cpu | head -5

# Топ-5 процессов по памяти
ps aux --sort=-%mem | head -5

# Более читаемый вывод с ключевыми полями
ps -eo pid,user,%cpu,%mem,command --sort=-%cpu | head -10

3. Утилиты для детального анализа:

  • atop: Записывает историю нагрузки, что полезно для пост-анализа сбоев.
  • iotop / iostat: Для выявления процессов, активно работающих с диском (I/O wait).
  • nmon: Комплексный мониторинг CPU, памяти, диска и сети.

4. Для долгосрочного мониторинга (DevOps-стек):

  • Prometheus + Node Exporter: Сбор метрик с сервера (node_cpu_seconds_total, node_memory_MemAvailable_bytes).
  • Grafana: Визуализация метрик и создание дашбордов.
  • Alertmanager: Настройка алертов при превышении пороговых значений (например, CPU > 90% более 5 минут).