Перейти к основному содержимому
Вернуться в категорию

Сервер работает медленно: диагностика CPU, RAM и диска

Руководство по обнаружению и устранению проблем производительности сервера: чек-лист проверки CPU, RAM, диска, swap, процессов и сети. Диагностика Linux-сервера.

Время чтения: 10 мин. Устранение неполадок
сервер медленныйпроблема производительностизагрузка CPURAM заполнендиск заполненswapустранение неполадок

Содержание

Введение

Если ваш сервер работает медленно, необходимо следовать систематическому чек-листу для определения источника проблемы. Это руководство пошагово описывает наиболее распространённые проблемы производительности и их решения.

Это руководство подготовлено для серверов Linux (Ubuntu, Debian, CentOS, Rocky Linux). Для Windows Server аналогичные проверки выполняются другими инструментами.

1. Проверка использования CPU

Высокая загрузка CPU — наиболее частая причина замедления сервера.

Текущее состояние CPU

hljs bash
# Общее использование CPU
top -bn1 | head -5

# Детальный и интерактивный вид
htop

# Использование по ядрам CPU
mpstat -P ALL 1 5

Процессы с наибольшим использованием CPU

hljs bash
# Список процессов, отсортированный по использованию CPU
ps aux --sort=-%cpu | head -20

# Мониторинг в реальном времени
top -o %CPU

Если использование CPU постоянно выше 90%, необходимо определить и оптимизировать ресурсоёмкие процессы или увеличить ресурсы сервера.

Рекомендации по решению

  • Остановите ненужные процессы: kill -9 PID
  • Оптимизируйте конфигурацию приложения (количество воркеров, лимит потоков)
  • Рассмотрите увеличение ресурсов CPU (повышение тарифа VDS)

2. Проверка использования RAM

Недостаточный объём RAM приводит к использованию swap и резкому замедлению.

Состояние RAM

hljs bash
# Общее состояние памяти
free -h

# Детальная информация о памяти
cat /proc/meminfo | head -10

# Использование RAM по процессам
ps aux --sort=-%mem | head -20

Интерпретация примера вывода

              total        used        free      shared  buff/cache   available
Mem:          7.8Gi       6.2Gi       0.3Gi       0.1Gi       1.3Gi       1.2Gi
Swap:         2.0Gi       1.5Gi       0.5Gi
МетрикаНормальноПредупреждениеКритично
Использование RAM< 70%70-90%> 90%
Использование Swap0< 25%> 50%
Available> 20%10-20%< 10%

Если использование swap высокое (> 50%), RAM недостаточно. Swap работает на диске и значительно медленнее RAM.

3. Проверка диска и I/O

Дисковое пространство

hljs bash
# Сводка использования диска
df -h

# Найти самые большие каталоги
du -sh /* 2>/dev/null | sort -rh | head -10

# Найти самые большие файлы
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -rh | head -10

При использовании диска более 90% могут начаться проблемы с производительностью. 95%+ — критический уровень, требуется срочное освобождение места.

Производительность дискового I/O

hljs bash
# Текущий дисковый I/O
iostat -x 1 5

# Использование I/O по процессам
iotop -o

# Тест скорости чтения/записи диска
dd if=/dev/zero of=/tmp/testfile bs=1M count=1024 oflag=direct
rm /tmp/testfile
МетрикаNVMe SSDSATA SSDHDD
Чтение3000+ МБ/с500+ МБ/с100-200 МБ/с
Запись2000+ МБ/с400+ МБ/с80-150 МБ/с
IOPS500K+50K+100-200

4. Анализ использования Swap

Высокое использование swap означает нехватку RAM — сервер управляет памятью через диск.

hljs bash
# Состояние swap
free -h | grep Swap
swapon --show

# Какие процессы используют swap?
for file in /proc/*/status; do
  awk '/VmSwap|Name/{printf $2 " " $3}END{print ""}' $file 2>/dev/null
done | sort -k2 -rn | head -10

Очистка Swap (временное решение)

hljs bash
# Если достаточно свободной RAM, очистить swap
sudo swapoff -a && sudo swapon -a

Очистка swap — временное решение. Для постоянного решения увеличьте объём RAM или оптимизируйте приложения, потребляющие память.

5. Проверка производительности сети

hljs bash
# Статистика сетевого интерфейса
ifconfig eth0

# Количество соединений
ss -s

# Активные соединения (IP с наибольшим количеством соединений)
ss -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -10

# Использование пропускной способности (требуется nload)
nload eth0

# Тест скорости
wget -O /dev/null http://speedtest.tele2.net/10MB.zip 2>&1 | tail -2

Большое количество соединений (10 000+) может потреблять ресурсы сервера. Возможно, вы подвергаетесь DDoS-атаке — проверьте историю атак в Path Panel.

6. Анализ процессов

hljs bash
# Количество запущенных процессов
ps aux | wc -l

# Зомби-процессы
ps aux | awk '{if ($8 == "Z") print}'

# Самые долго работающие процессы
ps -eo pid,etime,comm --sort=-etime | head -20

# Использование ресурсов конкретным приложением
ps aux | grep -i mysql
ps aux | grep -i java
ps aux | grep -i node

7. Проверка системных логов

hljs bash
# Последние системные ошибки
dmesg | tail -50

# Логи OOM (Out of Memory) killer
dmesg | grep -i "oom\|killed process"

# Системные логи
journalctl -p err --since "1 hour ago"

# Ошибки диска
dmesg | grep -i "error\|fail\|i/o"

Если вы видите логи OOM killer, RAM недостаточно и система принудительно завершает процессы для освобождения памяти.

Быстрый чек-лист

hljs bash
# Сводка общего состояния одной командой
echo "=== CPU ==="; top -bn1 | head -5; echo "\n=== RAM ==="; free -h; echo "\n=== DISK ==="; df -h /; echo "\n=== LOAD ==="; uptime; echo "\n=== TOP PROCESSES ==="; ps aux --sort=-%cpu | head -5

Когда обращаться в службу поддержки?

  • Если при проверках выше не обнаружена явная проблема
  • Если вы подозреваете проблему на аппаратном уровне
  • Если снижена производительность сети и вы подозреваете DDoS-атаку
  • Если OOM killer срабатывает постоянно

При создании запроса в поддержку приложите вывод вышеуказанных команд — это ускорит решение проблемы.