10 825
3
Время чтения ≈ 11 минут
Борьба с нагрузкой на vds

Бесперебойная работа приложений и сервисов напрямую зависит от нагрузки, оказываемой на виртуальный сервер (VPS). Сбои в работе VPS могут вызвать разные причины — от резко возросшей посещаемости до атак киберпреступников.

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

Как протестировать нагрузку на VPS и уменьшить ее самостоятельно расскажем в данной статье.

Что такое нагрузка на VPS

Нагрузка на сервер — количественная оценка характеристик ресурсов хостинга, расходуемых во время выполнения текущих задач. Иными словами, это процент загрузки ресурсов сервера — процессора (CPU), оперативной памяти (RAM или ОЗУ) и дискового пространства.

Борьба с нагрузкой на vds

Виды нагрузки

  1. На базу данных.
    Чем вызвано: тяжелые SQL-запросы, отсутствие оптимизации и некорректные настройки конфигурационного файла.
  2. На веб-сервер.
    Чем вызвано: увеличение посещаемости интернет-ресурса, находящегося на VDS.

Мониторинг виртуального сервера

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

Борьба с нагрузкой на vds - мониторинг

Как проводить мониторинг VPS

Для анализа сетевой активности используется утилита atop. Она записывается в лог событий, в котором можно найти процесс, приводящий к перегрузке сервера.

В Linux Ubuntu утилиту можно установить, воспользовавшись командой из терминала:

sudo apt-get install atop

После инсталляции требуется запустить команду:

sudo atop 1

В терминале отобразится информация, разделенная на две секции. В первой — основная (загруженность CPU, RAM и диска), а во второй — данные о выбранном процессе.

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

sudo atop –r

Использование дисковых ресурсов сервера можно увидеть в строке DSK («busy» — процентное соотношение текущего потребления). Если последнее значение эквивалентно 100%, это означает, что проблема заключается в операциях ввода/вывода или использовании самого VDS.

Посмотреть сетевую активность можно при помощи команды:

sudo top

Она выводит список всех процессов, работающих в системе, в режиме реального времени. Обновление экрана происходит каждые 3-4 секунды. В первых строках отображается информация о системе, а ниже — список всех процессов, который упорядочен по убыванию.

Программы для диагностики

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

  1. Простые — показывают время загрузки веб-страницы.
  2. Сложные — могут имитировать подключения из разных мест и производить DDoS-атаку на тестируемое приложение.

Список онлайн-сервисов мониторинга VDS

Борьба с нагрузкой на vds - locust

  • Locust. Масштабируемый инструмент для нагрузочного тестирования, написанный на Python. Отличный способ оценить производительность серверной части ресурса.
  • Host-Tracker. Позволяет выполнить тестирование сервера на нагрузку, одновременно подключаясь из 90 точек со всего земного шара.
  • OpManager. Бесплатная версия сервиса позволяет отслеживать 3 сетевых устройства. С его помощью можно осуществлять проактивный мониторинг состояния сети, серверов, маршрутизаторов и коммутаторов.
  • WebLOAD. Универсальный сервис для мониторинга позволяет проверить все страницы приложения и вывести время загрузки каждой из них. Пользователи на этом ресурсе могут заказать платную оптимизацию сайта.
  • LoadImpact. Выполняет тест нагрузки на сервер, используя одновременно 50 подключений, которые открывают до 20 страниц. Отчет отображается в графическом виде.
  • LoadNinja. Быстрое тестирование нагрузки на сервер, основанное не на виртуальной эмуляции, а на реальном браузере.

Причины перегрузки

Чтобы эффективно снизить нагрузку на VPS, требуется разобраться в причинах ее возникновения. Среди наиболее частых причин эксперты называют резкое увеличение количества посетителей, отсутствие оптимизации программ и СУБД, а также DDoS-атаки сервера.

Увеличение количества посетителей

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

Борьба с нагрузкой на vds - причины перегрузки

Решение № 1 — модернизация

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

Нужен надёжный виртуальные сервер с возможностью масштабирования и защитой от DDоS-атак и круглосуточной техподдержкой? Выбирайте VPS от Eternalhost!

Решение № 2 — оптимизация работы сервера

Снижаем нагрузку на VDS, используя правильные настройки кеширования для Apache и Nginx при помощи правки конфигурационного файла.

Борьба с нагрузкой на vds - оптимизация сервера

Для Apache

Директивы (инструкции), которые управляют кешем Apache, можно прописать в файл виртуального хоста или .htaccess (файл дополнительной конфигурации) проекта. Оптимальным является второй вариант.

Для этого нужно открыть файл .htaccess и внести строки:

<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf|doc|docx)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>

Далее требуется активировать Expires-модуль при помощи команды sudo a2enmod expires и перезапустить web-сервер: sudo service apache2 restart.

После этого следует включить модуль, указав:

ExpiresActive On
Для Nginx

Настройка кеширования для web-сервера Nginx заключается в редактировании конфигурационного файла. К его коду нужно добавить:

location ~* .(jpg|jpeg|gif|png|ico|css|swf|flv|doc|docx)$ {
root /var/www/site.ru;
}

Если создать файл «cache.conf» в директории «/etc/nginx/conf.d/», то можно управлять кешированием. В файле указываются параметры, описанные ниже.

  • Директория кеша: proxy_cache_path /var/cache/nginx.
  • Уровень вложенности каталогов: levels=1:2:3.
  • Базовый размер кеша в Мб: keys_zone=static_cache:100m.
  • Время, через которое происходит удаление кеша (мин): inactive=120m.
  • Указание максимального размера данных, подлежащих кешированию в Мб: max_size=500M.
  • Количество обращений к серверу: proxy_cache_min_uses 1.

После настройки файла, сервер нужно перезапустить, воспользовавшись командой:

sudo service nginx restart

Оптимизация программ, сервисов и СУБД

Скорость работы VDS зависит от настройки скриптового языка PHP, который генерирует контент для приложения, осуществляет подключение и работу с СУБД.

Борьба с нагрузкой на vds - модернизация программ

Решение № 1 — настройка скриптового языка PHP

Снижение нагрузки на VDS достигается при помощи грамотно настроенного PHP. Для его настройки нужно найти файл «php.ini», воспользовавшись поиском файлов на сервере. Далее его следует скачать, открыть в любом редакторе и изменить параметры, указанные ниже.

always_populate_raw_post_data = Off
output_buffering = On
; variables_order
; Default Value: "EGPCS"
; Development Value: "GPCS"
; Production Value: "GPCS"
date.timezone = Europe/Moscow
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.enable_cli=0

После этого необходимо перезапустить сервер, воспользовавшись командой из консоли sudo service apache2 restart или sudo service php5-frm restart.

Решение № 2 — оптимизация MySQL

Для оптимизации MySQL требуется открыть файл «my.conf», который находится в директории с установленной СУБД «/etc/». Затем параметры нужно изменить таким образом:

log-slow-queries=/var/log/mariadb/slow_queries.log
long_query_time=5
log-queries-not-using-indexes=1
query_cache_size=0
query_cache_type=0
query_cache_limit=1M
tmp_table_size=16M
max_heap_table_size=16M
thread_cache_size=16
skip-name-resolve=1
innodb_buffer_pool_size=800M
innodb_log_file_size=200M

После внесения изменений файл требуется сохранить, а в терминале запустить движок СУБД MariaDB при помощи команды «sudo systemctl start mariadb».

Решение № 3 — ограничение индексации

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

Например, статьи, не содержащие полезную информацию, можно смело скрывать от роботов поисковых систем при помощи текстового файла «robots.txt».

Пример robots.txt

User-agent: *
Disallow: /cgi-bin          # классика...
Disallow: /?                # все параметры запроса на главной
Disallow: /wp-              # все файлы WP: /wp-json/, /wp-includes, /wp-content/plugins
Disallow: *?s=              # поиск
Disallow: *&s=              # поиск
Disallow: /search           # поиск
Disallow: /author/          # архив автора
Disallow: */embed           # все встраивания
Disallow: */page/           # все виды пагинации
Allow: */uploads            # открываем uploads
Allow: /*/*.js              # внутри /wp- (/*/ - для приоритета)
Allow: /*/*.css             # внутри /wp- (/*/ - для приоритета)
Allow: /wp-*.png            # картинки в плагинах, cache папке и т.д.
Allow: /wp-*.jpg            # картинки в плагинах, cache папке и т.д.
Allow: /wp-*.jpeg           # картинки в плагинах, cache папке и т.д.
Allow: /wp-*.gif            # картинки в плагинах, cache папке и т.д.
Allow: /wp-*.svg            # картинки в плагинах, cache папке и т.д.
Allow: /wp-*.pdf            # файлы в плагинах, cache папке и т.д.
Allow: /wp-admin/admin-ajax.php
#Disallow: /wp/             # когда WP установлен в подкаталог wp

Sitemap: http://example.com/sitemap.xml    
Sitemap: http://example.com/sitemap2.xml    # еще один файл
#Sitemap: http://example.com/sitemap.xml.gz # сжатая версия (.gz)

# Версия кода: 1.1
# Не забудьте поменять `site.ru` на ваш сайт.

Решение № 4 — сжатие изображений

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

Решение № 5 — лимиты скачивания

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

Решение № 6 — ошибки в программном коде

Неверный код, на котором написано web-приложение, является основной причиной нагрузки на VDS. За помощью требуется обратиться к программисту или найти ошибки самостоятельно.

Решение № 7 — использование легкой CMS

Нагрузка, оказываемая на виртуальный сервер, зависит от CMS, которая на нем установлена. WordPress — универсальное решение, которое рекомендуют специалисты для большинства типов сайтов. Её главные достоинства — простота установки, нетребовательность к ресурсам и стабильность выпускаемых модулей.

Кибератаки

Борьба с нагрузкой на vds - кибератаки

DDoS-атаки киберпреступников могут привести к существенной перегрузке сервера. Основным способом защиты является механизм фильтрации входящего трафика, который обеспечивает хостер.

Заключение

Постоянные мониторинг и диагностика нагрузки на VDS, а также оптимизация программного обеспечения и СУБД способны предотвратить его перегрузку. Если это произошло, то необходимо провести настройку веб-сервера, оптимизировать работу СУБД и настроить PHP.

Оцените материал:
[Всего голосов: 5    Средний: 5/5]
Подписаться
Уведомление о
guest
3 комментариев
Inline Feedbacks
View all comments
Андрей

Забыли упомянуть про такой важный показатель, как Load average (число запущенных процессов). Именно по нему на линукс-серверах в основном оценивают нагрузку.

Виктор

Насколько я помню, у atop есть полезный режим «демона», который позволяет мониторить сервер в фоновом режиме. Особенно нужно, если перегруз приходятся на ночное время.

Надежный хостинг для сайта. 14 дней - бесплатно!