← Назад к вопросам

Как проверишь причину перегрузки сервера 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 для точной локализации виновника, затем оптимизирую или масштабирую.