Как найти источник высокой нагрузки на сервере Печать

  • Высокая нагрузка, сервер не работает, сервер не доступен, High load, the server is down, the server is not available, диагностика сервера, server diagnostics
  • 0

Высокая нагрузка на сервер может привести к медленной работе сайта, ошибкам 502 и 504, зависаниям панели управления и даже недоступности проекта для посетителей.

При этом сама по себе высокая нагрузка ещё не говорит о наличии проблемы. Например, во время резервного копирования, обновления системы или пикового наплыва посетителей нагрузка может временно увеличиваться и затем возвращаться к нормальному уровню.

Главная задача администратора — определить, какой процесс, сайт или служба потребляет ресурсы сервера.

В этой статье рассмотрим основные способы диагностики высокой нагрузки на Linux-сервере.

Что считается высокой нагрузкой

Первым делом стоит посмотреть показатель Load Average.

Выполните команду:

uptime

Пример результата:

14:30:15 up 15 days,  2:14,  1 user,  load average: 4.25, 3.87, 3.11

Последние три числа показывают среднюю нагрузку за:

  • 1 минуту;
  • 5 минут;
  • 15 минут.

Если сервер имеет 4 ядра процессора:

  • нагрузка до 4 обычно считается нормальной;
  • нагрузка выше 4 говорит о высокой загрузке;
  • нагрузка значительно выше количества ядер требует дополнительной проверки.

Например:

load average: 18.5

на четырёхъядерном сервере уже является серьёзным поводом для диагностики.

Проверка загрузки процессора

Самый простой инструмент:

top

В верхней части окна отображается общая информация о системе.

Ниже находится список процессов, отсортированных по потреблению ресурсов.

Обратите внимание на столбцы:

%CPU
%MEM

Они показывают использование процессора и памяти каждым процессом.

Если какой-либо процесс постоянно использует 80–100% CPU, именно он может быть причиной проблемы.

Использование htop

Если установлен пакет htop, работать с ним значительно удобнее:

htop

Если утилита отсутствует:

apt install htop -y

Преимущества htop:

  • удобный интерфейс;
  • отображение нагрузки по каждому ядру;
  • сортировка процессов;
  • поиск процессов;
  • возможность завершения процесса прямо из программы.

Поиск самых ресурсоёмких процессов

Отобразить процессы, потребляющие больше всего процессорного времени:

ps aux --sort=-%cpu | head

Для памяти:

ps aux --sort=-%mem | head

Это позволяет быстро определить основные источники нагрузки.

Проверка использования оперативной памяти

Недостаток памяти часто приводит к замедлению работы сервера.

Проверьте состояние RAM:

free -h

Пример:

Mem: 4.0G used 3.8G free 200M

Если свободной памяти почти не осталось и активно используется Swap, стоит изучить процессы, потребляющие память.

Проверка использования диска

Иногда причиной высокой нагрузки становится диск.

Проверьте свободное место:

df -h

Если раздел заполнен на 100%, многие службы могут работать нестабильно.

Для поиска крупных каталогов:

du -sh /* 2>/dev/null

Для поиска больших файлов:

find / -type f -size +500M

Проверка дисковой активности

Высокая нагрузка может быть связана не с процессором, а с операциями чтения и записи.

Установите пакет:

apt install sysstat -y

После этого выполните:

iostat -x 1

Обратите внимание на показатель:

%util

Если значение постоянно приближается к 100%, диск является узким местом системы.

Проверка сетевой активности

Иногда нагрузка связана с большим количеством входящих подключений.

Проверить сетевые соединения:

ss -ant

Подсчитать количество соединений:

ss -ant | wc -l

Если соединений тысячи или десятки тысяч, возможно:

  • идёт DDoS-атака;
  • работает ботнет;
  • сайт получает аномально высокий трафик.

Проверка веб-сервера

Если используется Nginx:

tail -f /var/log/nginx/access.log

Если используется Apache:

tail -f /var/log/apache2/access.log

Журналы помогут понять:

  • какие страницы запрашиваются чаще всего;
  • какие IP создают нагрузку;
  • есть ли подозрительная активность.

Поиск проблемного сайта на сервере

Если на сервере размещено несколько сайтов, необходимо определить источник нагрузки.

Для PHP-проектов выполните:

top -c

или:

ps auxf

В строке процесса часто можно увидеть путь к конкретному сайту.

Например:

/home/site1/public_html

или:

/home/site2/public_html

Это помогает быстро найти проблемный проект.

Проверка MySQL или MariaDB

База данных также может быть причиной высокой нагрузки.

Проверьте активные запросы:

mysqladmin processlist

или войдите в консоль MySQL:

SHOW FULL PROCESSLIST;

Обратите внимание на:

  • долгие запросы;
  • большое количество соединений;
  • запросы в состоянии Locked.

Проверка Cron-задач

Иногда нагрузка появляется по расписанию.

Посмотреть задания текущего пользователя:

crontab -l

Системные задачи:

ls -la /etc/cron*

Если нагрузка возникает в определённое время суток, стоит проверить именно Cron.

Проверка журналов системы

Полезно изучить последние системные сообщения:

journalctl -xe

или:

dmesg | tail

Здесь могут отображаться ошибки памяти, диска или служб.

Частые причины высокой нагрузки

На практике чаще всего встречаются:

  • атаки ботов;
  • ошибки в плагинах WordPress;
  • медленные SQL-запросы;
  • недостаток оперативной памяти;
  • отсутствие кэширования;
  • заражённые скрипты;
  • некорректные Cron-задачи;
  • резервное копирование в рабочее время;
  • DDoS-атаки;
  • переполненный диск.

Что делать после обнаружения проблемы

После определения источника нагрузки можно:

  • остановить проблемный процесс;
  • отключить неисправный плагин;
  • оптимизировать базу данных;
  • настроить кэширование;
  • ограничить доступ для ботов;
  • включить Cloudflare;
  • увеличить объём RAM;
  • перенести проект на более производительный тариф.

Главное — не пытаться сразу перезагружать сервер при каждой высокой нагрузке. В большинстве случаев несколько минут диагностики позволяют точно определить причину проблемы и устранить её без простоя сайта.

Рекомендации

При регулярных проблемах с производительностью рекомендуется установить систему мониторинга, например Zabbix, Netdata или Uptime Kuma.

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


Помог ли вам данный ответ?

« Назад