Высокая нагрузка на VDS/VPS: ищем и устраняем причины

Высокая нагрузка на VPS-VDS серверПричин сбоя в работе сайта существует огромное количество. Неполадки могут возникнуть из-за резкого наплыва посетителей в больших количествах, хакерских атак. Существует также вероятность возникновения проблем по вине администрации самого сайта, к примеру, неправильные настройки сервера практически неизбежно приводят к плохому исходу. Вся нагрузка на VDS и VPS делится на 3 основных вида: нагрузка на диск, на оперативную память и на процессор. Также избыточная нагрузка на сервер может стать критичной из-за того, что тарифы хостинга имеют ограничение на количество открытых одновременно файлов и выполняющихся одновременно процессов.

Разберемся, по каким причинам чаще всего возникает повышенная нагрузка и как ее устранить.

Анализ работы сервера

Первым шагом на пути к определению нагрузки на VDS и VPS сервере будет проверка того, насколько хорошо функционирует этот сервер. Для этого существует достаточное количество инструментов.

NIX утилиты

Хорошее представление о работе сервера в определенный момент дает раздел статистики в панели управления. Но для более подробного ознакомления лучше воспользоваться консолью. В UNIX наиболее простым средством отслеживания работы сервера является команда top. Она дает развернутую информацию, в том числе в режиме реального времени. Обратить внимание надо на столбики с названиями COMMAND, %CPU, %MEM, load average и Mem В них содержится информация о выполняемой команде, проценте используемых ресурсов процессора в данный момент, о проценте используемой памяти, среднем времени процессов в очереди и о количестве свободной и используемой в данный момент памяти. Очень плохим знаком является рост load average свыше пяти.

Еще одной командой для проверки исполняемых процессов и потребляемых ресурсов является команда ps auxw. По запросу free-m вы получите информацию о свободной и используемой памяти. Воспользовавшись vmstat вы узнаете о процессах, их активности, а также памяти с свопинга.

Нагрузка на диск определяется при помощи:
— Команды top-mio в случае FreeBSD. Информацию о проценте загруженности диска процессом нужно смотреть в столбиках COMMAND и PERCENT.
— Команды iotop, если требуется узнат, какой процесс создает нагрузку на диск. В выведенной информации вы получите эту нагрузку в процентах.

Apache

Это звено крайне необходимо для корректного функционирования проекта. Apache отдает информацию клиентам, посещающим ресурс. Чтобы определить, например, нагрузку на процессор или любую другую для Apache существует большое количество модулей. Примерами могут являться mod_perfomance и mod_sattus для проверки и определения скриптов, нагружающих сервер.

Лог-файлы

Не всегда приходится иметь дело с приятно визуализированной запрашиваемой информацией. Иногда для получения более подробных данных бывает нужно почитать лог-файлы. Найти их можно по-разному, в зависимости от ОС вашего ресурса.

Причины нагрузки на сервер

Причины нагрузки на сервер

Если при просмотре процессов сервера вы видите, что там находится много процессов от Apache, а также протоколов php-cgi, это может быть вызвано следующими факторами.

Некорректная настройка ограничений веб-сервера

Чтобы проверить правильность настроек, нужно обратить внимание на значения MaxClients и MaxSapreServers. Наилучшее их значение можно вычислить, воспользовавшись простой формулой: MaxClients = M*0.8/H, где M и H – общее количество памяти и ее же количество, которое потребляет один процесс веб-сервера.

Действующие их значения определяются в консоли с помощью top. Не стоит выставлять эти значения выше 10. Чтобы их ограничить, воспользуйтесь файлами:

  • Для Debian — /etc/apache2/apache2.conf
  • Для Centos — etc/httpd/conf/httpd.conf
  • Для FreeBSD — /usr/local/etc/apache22/extra/httpd-mpm.conf

Также стоит обратить внимание на то, что не стоит выставлять и слишком низкое значение этих параметров. Иначе запросы не будут выполняться вовремя и сервер будет выдавать ошибки. Поэтому необходимо, чтобы данное значение было оптимальным для вашего сервера.

DDos-атака на сайт

Очень часто хакеры-злоумышленники или не очень порядочные конкуренты используют этот метод для повышения нагрузки сервер какого-либо сайта, чтобы положить его. Важно вовремя обнаружить атаки и продумать план действий по борьбе с ней. Иногда требуется выполнять какие-то действия для ее устранения, а иногда бывает полезнее ее просто переждать.

Высокая посещаемость проекта

Если ваш проект вдруг начал резко набирать популярность, это неизбежно приведет к повышению нагрузки на процессор вашего сервера. Отследить посещаемость можно с помощью большого количества онлайн-средств прямо в браузере. Для более точной и подробной информации вы, опять же, можете обратиться к логам.

Повышение нагрузки подобного типа может быть вызвано работой ботов поисковиков. Об этом в логах сервера имеются соответствующие записи.

Чтобы этого избежать, вы всегда имеете возможность ограничить доступ к своему сайту для всех ботов сразу или для каких-то определенных. Для этого нужно воспользоваться файлом robots.txt или .htaccess, в котором потребуется указать некоторые настройки. Делать это нужно в корне сайта или той директории вашего сайта, доступ к которой вы хотите ограничить. Настройки для файла robots.txt, запрещающие скачивать любые файлы, кроме страниц, начинающихся с «/cgi-bin», должны выглядеть так:

Настройки robots.txt

В .htaccesss подобная настройка может выглядеть следующим образом, если мы, например, разрешаем доступ только User-Agent,который начинается с Google :

Настройка .htaccess

AdminVPS осуществляет всю настройку за своих клиентов совершенно бесплатно по системе “Все включено”

Некорректная работа скриптов

Высокая нагрузка может быть вызвана также неоптимальным распределением ресурсов между скриптами сайта. Эту нагрузку можно узнать с помощью уже описанных выше модулей веб-сервера Apache. Если проблема высокой нагрузки заключается в основном в скриптах, их работу необходимо отладить. Для выполнения трассировки можно воспользоваться расширениями php: xdebug или xhprof. Также будет полезным обращение к их разработчику.

Часто для решения такой проблемы прибегают к установке Nginx с каким-нибудь php-кэшером, например, APC, связка которых позволяет получать статистику и кэшировать пользовательские запросы, увеличивая тем самым скорость отдачи информации.

Apache создает нагрузку на процессор

Данная проблема вызвана неправильной работой скриптов, которая описана в предыдущем разделе. Также проблема может быть связана с работой с аудио и видео файлами или с их сжатием. Проверьте работу скриптов и запретите сжатие.

Нагрузка на диск от MySQL

MySQL нагрузка

Чтобы хранить некоторые временные данные, в этой системе могут использоваться диски серверов. Такая ситуация складывается, если в буферах памяти недостаточно места. Обычно это происходит при выполнении сложных процессов. Чтобы решить эту проблему, нужно повысить объем информации в буферах в файле настроек my.cnf. Увеличение размера директив tmp_table_size и max_heap_table_size практически всегда снижает данную нагрузку. Сделать это можно и с использованием команды mysqladmin-i2 processlist–p.

Создание временных таблиц будет происходить, пока не устранены следующие условия:

  • наличие BLOB или TEXT столбиков;
  • при условии использования GROUP BY и DISTRICT размер колонки превышает 512 байт;
  • размер колонки в выводе SELECT превышает 512 байт

Нагрузка на процессор от MySQL

Здесь проблема, скорее всего, заключается в проблемных индексах или таблицах. Проверьте логи и таблицы при помощи php MyAdmin.

Нагрузка от почтового сервера

Нагрузка почтового сервера

Такая проблема возникает в случае рассылки спама. Возможно, делать это ваш почтовый сервер заставляют вредоносные коды хакеров. Проверьте сообщения, стоящие в очереди на отправку. Используйте для этого команды mailq, exim–Mvb или воспользуйтесь логами:

  • Для exim: /var/log/exim/mainlog
  • Для sendmail: /var/log/maillog

Из-за чего может отсылаться спам:

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

Нагрузка от DNS сервера

Данная проблема также случается в результате атак на ваш ресурс. Для ее решения в настройках вашего DNS сервера в числе адресов, которым разрешен доступ, указывайте только проверенные ip.

Нагрузка от процессов tar и gzip

Чтобы избежать нагрузки данного типа, отмените резервное копирование файлов вашего сайта, если оно идет, ведь именно с ним связана работа этих процессов. Постарайтесь выполнить его в другое время, когда нагрузка на сервер со стороны других факторов будет минимальной.

Нагрузка от неизвестных процессов

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

Что будем искать? Например,VPS-сервер

Мы в социальных сетях