← Назад к вопросам
Как проверишь причину перегрузки сервера Load Average?
1.7 Middle🔥 151 комментариев
#Python Core#Soft Skills
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Диагностика перегрузки сервера по Load Average
Load Average — это усредненное количество процессов в очереди запуска за последние 1, 5 и 15 минут. Если load average больше количества ядер процессора, это указывает на перегрузку.
Инструменты диагностики
1. Просмотр Load Average:
uptime
top
cat /proc/loadavg
w
Первое число — load за последнюю минуту, второе — за 5 минут, третье — за 15 минут.
2. Количество ядер процессора:
nproc
lscpu
cat /proc/cpuinfo | grep processor | wc -l
3. Процессы в очереди:
top -b -n 1 | head -20
ps aux --sort=-%cpu | head -10
ps aux --sort=-%mem | head -10
Алгоритм диагностики на Python
import os
import psutil
load_avg = os.getloadavg()
num_cores = os.cpu_count()
print(f"Load Average: {load_avg}")
print(f"CPU cores: {num_cores}")
print(f"Перегрузка: {load_avg[0] > num_cores}")
# Топ процессов по CPU
for proc in sorted(psutil.process_iter(['pid', 'name', 'cpu_percent']), key=lambda p: p.info['cpu_percent'], reverse=True)[:5]:
print(f"{proc.info['pid']}: {proc.info['name']} - {proc.info['cpu_percent']}%")
Частые причины
- CPU-bound процессы — криптография, обработка данных
- I/O блокировки — медленный диск, сетевые задержки
- Утечки памяти — процесс растет со временем
- Бесконечные циклы — баги в коде
- Синхронизация — блокировки между потоками
Диагностирую через uptime, top, iotop и скрипты на Python для точной локализации виновника, затем оптимизирую или масштабирую.