Что нужно делать, если на сервере высокий Load Average?

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

Ответ

Высокий Load Average указывает на перегрузку сервера. Мои действия по диагностике и устранению:

  1. Анализ процессов
    Использую top, htop или ps aux --sort=-%cpu для поиска процессов, потребляющих CPU/RAM. Часто виновниками бывают Java-приложения с утечкой памяти или скрипты, попавшие в бесконечный цикл.

  2. Проверка IO
    Запускаю iostat -x 1 и vmstat 1, чтобы проверить дисковую загрузку. Высокие значения await и %util указывают на проблемы с диском (например, медленный RAID или переполненный диск).

  3. Анализ логов и метрик
    Смотрю dmesg и journalctl -xe на предмет ошибок ядра или системных служб. Одновременно проверяю графики в Prometheus/Grafana, чтобы увидеть историю нагрузки и коррелировать её с деплоями или другими событиями.

  4. Масштабирование и оптимизация

    • Вертикальное: Увеличиваю vCPU/RAM на виртуальной машине или добавляю более быстрые диски (NVMe).
    • Горизонтальное: Настраиваю балансировщик нагрузки (Nginx, HAProxy) или добавляю ноды в Kubernetes-кластер.
    • Оптимизация: Настраиваю лимиты памяти и CPU для контейнеров (cgroups), оптимизирую запросы к БД, настраиваю кэширование (Redis).

Пример быстрой диагностики:

# Топ-10 процессов по потреблению CPU
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -n 10

# Проверка дискового ввода-вывода с интервалом в 1 секунду
sudo iostat -x 1 5

# Проверка использования swap
free -h && vmstat 1 5