Повышенная нагрузка. Кто виноват и что делать?

Повышенная нагрузкаКаждый из нас наверняка сталкивался с ситуациями, когда сайт безбожно тормозит, картинка не едет и видео прерывается. А то и вообще страничка не открывается. Помимо очевидных вещей, как то “забыли включить сервер” или “кривые руки поковырялись в настройках” есть еще и неочевидная — популярность. Сервер не выдерживает нагрузки и падает либо тормозит, а винят во всем сисадминов. Многие провайдеры такие сайты не любят и выгоняют их с обычного хостинга, выпихивая (обычно насильно) на VPS и выделенные сервера. Однако, VPS и собственный сервер так же не гарантирует стабильной работы “сходу”. При чрезмерном потреблении памяти, например, в VPS, службы, такие как HTTP сервер или MySQL будут попросту “убиваться” операционной системой, дабы сохранить сам сервер живым, а выделенный сервер “уйдет в своп” и благополучно задержится там до полной перезагругки. Итак: немного о нагрузках и с чем их “есть”.

Дано: сервер с большой посещаемостью и/или ресурсоемким ПО.

Найти: методы борьбы с перегрузками для стабилизации работы сервера.

С виду – обычная задача, однако не всем или, по крайней мере, не сразу удается найти решение. Обычно под перегрузкой сервера подразумевается такое его состояние, в котором он не может адекватно отрабатывать запросы, в результате чего процессы вначале требуют больше времени на обработку, а потом и вовсе перестают выполняться – и сервер, как говорится, «зависает».

Что касается того, как именно сервер доходит до такого состояния, объясняется чересчур интенсивным использованием одного или даже сразу нескольких сервисов на машине. Например, вам необходимо разослать уведомления всем посетителям вашего он-лайн сообщества (допустим, их у вас тысяча) – вы отсылаете письма всем и сразу, и в итоге ваш сервер «подвисает», от того, что почтовый сервис очень быстро перегружается от большого количества одновременно созданных запросов. Возможно, ваш сервер справился с задачей, и ваши посетители получили почту… и откликнулись! А теперь представьте, как они все зашли к вам на страничку – вот уже и веб-сервер не отвечает, а если они еще начнут обращаться к базе данных – машина обречена на перегрузку… Выходов из подобной ситуации существует несколько, и сегодня мы познакомим вас с тремя основными решениями этой проблемы.

1. Оптимизация работы сервера

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

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

Если вы пользуетесь стандартной CMS для сайта, форума или электронного магазина – Google.com вам в помощь. Время, проведенное в поисках и разгребании информации, окупится с лихвой более «живым» сервером. Хуже, если систему писали «под вас» — придется приставать к разработчикам и просить их помочь с оптимизацией. Это зачастую дорого и не всегда помогает 🙁

Плюсы: Гибкое решение, позволяющее настроить сервер «под себя». Грамотная оптимизация позволит вам сэкономить деньги, которые пришлось бы потратить на апгрейд сервера.

Минусы: Геморройное решение, на поиск которого могут уйти долгие дни. Требует «жертв» в виде времени и вашего пристального внимания.

2. Апгрейд

Это решение советуют наиболее часто. Действительно, там, где оптимизировать уже нечего и проект «вырастает» из выделенного под него «железа», остается перевезти сайт на другой, более мощный сервер (в случае с VPS просто сменить тарифный план). В плане апгрейдов VPS является наиболее удачной платформой, так как эта операция фактически не требует физической замены сервера и трансфера сайта на него, что экономит кучу времени.

Тем не менее, при всех очевидных преимуществах этого решения, с апгрейдом торопиться не стоит. Вначале следует убедиться, что службы сервера и сайт оптимизированы, в противном случае вы рискуете вскоре начать испытывать те же проблемы и на новом сервере (при других объемах нагрузки, разумеется). Также следует определиться, какая именно мощность вам необходима, какие именно ресурсы сервера используются больше всего. Многие рекомендуют брать сервер «на вырост», однако в случае с VPS это вовсе не обязательно – VPS можно апгрэйдить хоть каждый день.

Плюсы: Быстро, и, в случае с VPS – просто. Заявка на апгрэйд в расчетный отдел и 1 перезагрузка сервера.

Минусы: Стоит денег, не всегда приводит к желаемым результатам.

3. Распределение нагрузки между серверами (кластеризация)

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

В случае с пользователями, содержащими один-два ресурсоемких Интернет-проекта, пары серверов, как правило, бывает достаточно. В зависимости от характеристик нагрузки можно либо полностью дублировать сервера и функции, ими выполняемые, либо «затачивать» каждый из серверов под специфические нужды. Например: разнести почтовую службу, HTTP сервер и сервер баз данных на разные машины и каждую из них оптимизировать под тип выполняемой задачи. Так же можно разделить по типу контента, и для статического контента (картинки, музыка, видео, другие файлы) использовать одну машину, а для динамического – другую.

Плюсы: Практически неограниченные возможности расширения (в разумных пределах). Гибкое управление нагрузкой.

Минусы: Дорогое решение, требующее грамотного администрирования и подготовленного программного обеспечения, которое знает, что его «кластеризируют».

Обычно, повышенная нагрузка косвенно свидетельствует об успешности вашего проекта. Надеемся, что эта статья поможет вам с выбором правильного пути развития, ну а если запутаетесь – наша служба поддержки всегда рада помочь 🙂