Ответ
Высокий Load Average (LA) — это классический симптом перегрузки системы. В DevOps мы подходим к диагностике системно, используя цепочку команд и понимая, что LA > числа ядер CPU означает очередь задач.
1. Быстрая первичная диагностика:
# 1. Смотрим общую картину: LA, задачи, CPU, память
htop # Или `top`, затем нажимаем '1' для просмотра нагрузки по ядрам
# 2. Определяем тип нагрузки: CPU, I/O, Memory?
# В `top` смотрим строки:
# %Cpu(s): us, sy, id, wa, st
# %wa (I/O wait) > 5-10% — явный признак проблем с диском/сетью.
# 3. Смотрим на процессы в состоянии 'D' (Uninterruptible Sleep) и 'R' (Running)
ps aux | awk '$8 ~ /D/ { print $0 }' # Процессы, заблокированные на I/O
2. Детальный анализ по возможным причинам:
- CPU-bound процессы:
pidstat 1 5 # Статистика по процессам каждую секунду perf top # Профилирование CPU в реальном времени - I/O-bound процессы (самая частая причина высокой LA при низком %CPU):
iostat -xz 1 # Показатели загрузки дисков, await, %util iotop -o # Показывает процессы, активно ведущие I/O # Проверка конкретного диска (если %util близок к 100%) sudo smartctl -a /dev/sda - Нехватка памяти (вызов swapping):
free -h vmstat 1 # Обращаем внимание на колонки 'si' (swap in) и 'so' (swap out) sar -B 1 3 # Статистика paging - Большое количество процессов/потоков:
ps -eLf | wc -l # Общее количество потоков (LWP) pstree # Визуализация дерева процессов
3. Интеграция с мониторингом (DevOps-подход):
Мы не ждём проблем, а отслеживаем метрики заранее:
- Prometheus + Node Exporter: Сбор метрик
node_load1,node_load5,node_load15,node_cpu,node_disk_io_now. - Grafana: Дашборды с визуализацией LA, корреляцией с метриками CPU, Disk I/O, Memory.
- Алертинг: Настройка правил в Alertmanager при превышении LA порогового значения (например, > 70% от числа ядер в течение 5 минут).
Типичные сценарии и действия:
- Высокий
%waи LA: Оптимизация запросов к БД, проверка медленных дисков, переход на SSD, настройка кэширования. - Много процессов 'D': Часто проблема с NFS или другим сетевым хранилищем. Проверка сетевой задержки и состояния сервера хранения.
- Всплеск LA и
%sy: Возможна проблема с системными вызовами (например, частыйfork()). Требуется профилирование приложения.