Как снизить нагрузку на сервер

Необходимость снизить нагрузку на сервер появляется когда он начинает медленнее отвечать на запросы пользователей и выдавать серверные ошибки с кодами 5XX.

Узнать причины нагрузки можно воспользовавшись любой утилитой для диагностики — например atop, с ключем -r она позволяет просматривать логи, а с ключем -l — текущее состояние сервера.

 

 

Как снизить нагрузку на сервер

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

 

Задержки могут происходить в любом из звеньев,определить это наверняка как раз позволит atop.

 

Если причиной нагрузки является невозможность веб-сервера обрабатывать поступающие запросы может быть несколько вариантов:
  • ограничить количество запросов
  • увеличить мощность сервера и количество доступных ему ресурсов
  • оптимизировать настройки ПО

 

1)

access.log Apache или Nginx позволит установить количество поступающих запросов и IP адреса, с которых обращаются клиенты, а также user-agent, характеризующий каждый запрос. Подробнее про такую блокировку.

 

Указанное решение предполагает запрет доступа ненужным ботам и поисковым роботам. Они вычисляются по user-agent — часто это Ahrefs, MJ12bot, LinkpadBot, MauiBot

Если происходит множество запросов и определенных адресов или из одной сети их можно заблокировать через iptables.

 

 

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

 

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

 

2)

Снизить нагрузку на сервер за счет увеличения мощности является самым очевидным решением. Это может быть перенос веб-проекта на другой физический сервер. С виртуальными машинами все проще и многие провайдеры позволяют увеличивать количество CPU и памяти без выключения сервера.

 

 

3)

Оптимизация настроек требует определенной квалификации и проводится для существующих условий. В простейшем случае это увеличение лимитов веб-сервера и включение сжатия HTML/CSS/JS, включение браузерного кэширования.

 

Тонкая настройка Nginx для работы при высоких нагрузках

Оптимизация настроек Apache