У каждого сайта (хостинга) есть свой ресурс - максимальная возможная нагрузка которую он сможет выдержат, после чего будет утерян или положен в 404 ошибку. Нагрузочное тестирование сайта – лакомый кусочек не только тестировщиков или разработчиков сайтов. Но и злоумышленников которым выгодно, вывести Вас из конкурентной ниши и отправить сайт в нокаут.

Представьте себе человека который ушел от совковых методов продаж и по чуть-чуть переходит к Интернет-ресурсам. К примеру он занимается продажей женских аксессуаров (бижутерии). И вот в один момент подсчитывая цену аренды и анализируя доход, он вспоминает, что его друг однажды поведал ему о том что сейчас можно все это делать в интернет-магазине и не платить за аренду и т.д. И вот все так хорошо у друга: прибыль, увеличение объема продаж, рост. Но есть огромное "НО".

Мы забыли сказать, что этот друг занимается продажей к примеру одежды. И тип одежды настолько уникален, что у него только несколько заграничных конкурентов и все. То-есть получается, что он тратит к примеру: 200$ (хостинг + домен) +  300$ (услуги программиста) = 500$/год. А прибыли у него к примеру 4-5000$/год. Шикарно не правда ли? И вот уже наш персонаж действует так же как и его друг. Он покупает хостинг и заказывает создание сайта, забывая проанализировать интернет рынок по своей тематике. Все хорошо, он платит SEO – оптимизаторам и вот уже его сайт в ТОП 10 в области. Что происходить дальше?

Его просто выжимают. Как? Уязвимости CMS, вёрстки или хостинга, да в принципе, чего угодно даже модуля или плагина на его сайте может привести к нагрузке сайта и впоследствии сервера. Его сайт уходить минимально в 404 ошибку, и при возобновлении своей работы с помощью reboot сервера снова ложиться злоумышленниками в ту же ошибку (состояние).

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

Нагрузочное тестирование сайта - анализ ошибок

1 ) Проанализируйте своего потребителя и конкурентов. Узнайте приблизительную нагрузку на сайты конкурентов. Какое оборудование необходимо для сайта?

  • в случае если конкурентная ниша это 200-300 посетителей в день (максимально) достаточно обычного хостинга с лимитом php memory limit 256-512 mb+apache;
  • если необходимо использовать выделенный (виртуальный) хостинг переходим к следующему пункту (в случае и первого вопроса второй пункт тоже можно выполнить).

2) Подбор оборудования или хар-к сервера (хостинга) по данному вопросу лучше заказать консультацию у программистов. У нас можно это сделать за 500 грн в течении дня.

3) Тестирование хостинга (сервера). В том случае если Вы не заказываете, а оформляете и собираете свой сервер алгоритм действий будет другой, но в конечном итоге все равно необходимо провести тестирование.

  • ищем ресурс по типу Loadimpact
  • тестируем и получаем результат что 50 пользователей нагрузку выдерживает.
  • в том случае если нагрузка нужна 300+ пользователей переходим к поиску других ресурсов

Нагрузочное тестирование сайта - устранение ошибки 404

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

Так как статья наша о нагрузочном тестировании сайта мы будем говорить о тестировании с помощью технологий Apache или PHP. Алгоритм описанный выше подходит конечно для серверов, сайтов и приложений. Его необходимо понимать потому что несмотря на то что именно вы тестируете. Нагрузка все равно ложиться на серверное оборудование. Вернемся к тестированию.

Нагрузочное и эталонное тестирование: в чем разница?

Существует нагрузочное и эталонное тестирование и важно понимать разницу между ними. Нагрузочное тестирование направлено на вывод из строя приложение или сайта. А эталонное тестирование направленно на уточнение сколько запросов в минуту или секунду может выполнить сервер.

Я буду говорить на примере PHP так как это в принципе основной язык WEB разработки после JS(javascript). Сам по себе PHP довольно быстрый в плане выполнения скорости запросов и ответов. Но зачастую все забывают о том что к времени ответа самого PHP свободно можно добавить скорость работы (ответа) самого оборудования. Поэтому очень важно знать критическую точку при которой ваше оборудование (сервер) выйдет из строя или уйдет в ошибки. Орудуя знаниями по этому вопросу всегда можно оценить когда необходимо будет добавить оборудование или же распределить нагрузку с помощью размещения и разделения нагрузки на пару или больше серверов. Так же можно выявить слабости платформы или приложения и исправить его в последствии.

Существует прекрасная программа с открытым исходным кодом Siege (рекомендация) которую можно настроить для чтения большого кол-ва URL из конфигурационного файла и регрессивного тестирования (подследственного) или рандом чтение из списка URL. Таким образом можно смоделировать реальное использование сайта и нагрузку на него. Зная определенное с помощью Siege уязвимое место на вашем сайте или приложении можно решить данный вопрос с безопасностью и нагрузкой сайта. И так как программа абсолютно бесплатна её можно использовать постоянно находя и исправляя недостатки своего сайта или сервера.

Какой же вывод?

Конечно же для каждого человека нагрузочное тестирование сайта будет казаться неоправданно затратным по деньгам или времени. Но предупрежден значит вооружен!

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

С наилучшими пожеланиями, Филиппов Игорь.