Зачем нужно тестировать сайт под нагрузкой

18 февраля 2021

СОДЕРЖАНИЕ

Что представляет собой нагрузочное тестирование сайта (Load Testing)

Кому и зачем нужно делать нагрузочное тестирование сайта

Наиболее частые «костыли», выявляемые при тестировании

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

Что представляет собой нагрузочное тестирование сайта (Load Testing)

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

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

Поскольку речь идёт о ТЕСТИРОВАНИИ, то ни о какой страховке речи идти не может по определению. Тестирование всего лишь позволяет понять, сколько посетителей сайт может обработать в определенный период времени, причем как при пиковой, так и при плавной нагрузке. Также нагрузочное тестирование нередко позволяет выявить «узкие места» сайта.

Кому и зачем нужно делать нагрузочное тестирование сайта

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

Начнем с интернет-магазинов. Представьте себе сайт какого-нибудь условного Эльдорадо, Ситилинка, либо какого-либо действительно другого крупного продавца. Как Вы думаете, сколько выручки эти бойцы получают со своих сайтов? Ситилинк – ВСЮ выручку, а Эльдорадо, М-Видео, DNS и другие – не всю (т.к. у них есть оффлайн-офисы продаж), а только ее часть, причем немалую. А теперь представьте, что вышел какой-нибудь условный новый айфон, за которым «образовалась километровая очередь», т.е. народ резко полез на сайты магазинов, а сайты такой нагрузки просто не выдержали и «обвалились», ну или просто стали медленно работать. Что в итоге? Правильно – продаж нет (причем ПО ВСЕМ позициям), выручки нет, время идёт, программисты пытаются «на ходу» исправить ситуацию, «подперев код костылями», попутно выслушивая от начальства нотации, а потенциальные покупатели тем временем закупают товар у конкурентов, поскольку у них сайт прекрасно работает.

Аналогичная ситуация может произойти и на информационных сайтах, когда происходит какое-либо «хайповое» событие (вспомните пожар в «Зимней Вишне»), обзор которого есть у Вас на сайте.

Т.е. вопрос о том, какие сайты необходимо подвергать нагрузочному тестированию, здесь даже не стоит, т.к. ответ будет «ВСЕМ!!!». Теперь переходим от «кому» к «когда».

Абсолютно новый сайт

И фиг с ним, если речь идёт о блоге, поскольку на раскрутку его может уйти не один месяц. Но если речь идет о том же интернет-магазине, то тестирование нужно проводить в обязательном порядке. Причина проста – если сайт коммерческий, то первый трафик со 100% вероятностью будет рекламным, т.е. из Яндекс.Директа, Google Adsence и т.д. И трафик на сайт пойдёт практически сразу же после того, как будет запущена рекламная кампания, причем нельзя заранее предугадать, сколько посетителей придет после ее запуска.

Как правило, сайты конструируются на «тестовом» хостинге. К такому хостингу требования минимальны: «работает – и ладно», поскольку сайт закрыт от индексирования и, кроме сотрудников веб-студии, на него никто и не заходит. Вот только есть одна маленькая деталь, которая всё портит – во многих случаях сайт переносится на основной домен, выходит «в открытое плаванье», но при этом ОСТАЕТСЯ НА ТЕСТОВОМ ХОСТИНГЕ, который по определению не предназначен для высокой посещаемости!!! Что в итоге происходит? Правильно – несколько десятков посетителей одновременно переходят на сайт по рекламе, из-за этого страницы начинают грузиться по 8-10 секунд, что просто охренеть как долго. Результат – огромное количество отказов, а в качестве бонуса – еще и слив рекламного бюджета. Да, не спорим, любая уважающая себя и заказчиков веб-студия ВСЕГДА переносит сайт с тестового хостинга на «боевой» (а некоторые сразу ведут разработки на «боевом» хостинге), но заказчик – существо особое, недолюбленное, недообласканное, недооблизанное, а потому ему вполне может казаться, что тестового хостинга для интернет-магазина с 1,5 миллионами товарных позиций будет достаточно с большим запасом. И нагрузочное тестирование – это лучший (вернее – единственный) аргумент, против которого заказчику противопоставить будет нечего.

Сайт, на который были внесены крупные изменения

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

Вы планируете участвовать в крупных мероприятиях

К крупным мероприятиям в данном контексте можно смело отнести различные акции и распродажи, т.е. условные «Черные пятницы». Как Вы знаете, в период условной «Черной пятницы» посещаемость ресурса (если он, конечно, в этом мероприятии участвует) резко возрастает, причем кратно. Например, за день до ЧП посещаемость сайта составляла около 100 000 визитов, а в день ЧП – 300 000 визитов. И если в первом случае Ваши сервера справляются с нагрузкой играючи, то во втором они вполне могут и «упасть», что сведет «на нет» все старания маркетологов по привлечению трафика.

Если планируете участвовать в крупных мероприятиях – будьте готовы получить крупный кусок трафика, иначе этот кусок Вас просто задавит.

Периодически, или Просто «потому что»

Ну тут всё просто: по мере раскрутки трафик будет на сайт постепенно увеличиваться. Следовательно, будет расти и нагрузка на сервера. Следовательно, по мере роста трафика производительность может начать снижаться. Периодическое нагрузочное тестирование позволит своевременно понять, насколько сильно грузятся сервера, сколько еще осталось «запаса мощности» и пора ли предпринимать меры по снижению нагрузки на них. Рекомендуем проводить тестирование хотя бы 1 раз в полгода.

Наиболее частые «костыли», выявляемые при тестировании

Итак, переходим к так называемым «костылям» - решениям, применяемым в программировании, чтобы сайт хоть как-то работал. Хотя, если объективно, то в рамках данной статьи «костылями» гораздо правильнее называть «узкие места», из-за которых замедляется работа серверов.

Картинки

«Ой, опять про скорость загрузки, ну сколько можно уже?» Сколько нужно – столько и можно. И если бы вопрос с оптимизацией картинок решался веб-студией по умолчанию еще на стадии проектирования сайтов, то картинки бы в этот перечень не попали. Да и сайтов, где каждая картинка весит по 5-6 мегабайт в неэпически большом разрешении, предостаточно. Согласитесь, одно дело заранее скомпрессировать картинки до оптимального разрешения и качества, доведя объем передаваемых данных до 2-3 мегабайт, и совсем другое – загружать страницы, вес которых из-за вот таких несжатых картинок превышает 30 мегабайт. Разница в объеме передачи данных – в 10-15 раз. И в эти же 10-15 раз будет увеличена нагрузка на сервера хостинг-провайдера. Ну а если даже со сжатыми картинками объем передаваемых данных слишком большой, то что мешает применить так называемую «ленивую загрузку», когда картинки подгружаются только при прокрутке страницы? Да ничего не мешает!

Выделенная мощность хостинга

Мощность, которую хостинг-провайдер выделяет для Вашего сайта, напрямую зависит от тарифного плана, который Вы выбрали. И единственный способ повысить выделенную мощность – перейти на более дорогой тариф. Хотя… А зачем? Работает – и ладно! И вообще, это не у магазина проблемы с сайтом, а у посетителей проблемы с интернетом!

Базы данных

Как Вы знаете, в интернет-магазинах постоянно идёт обмен данными с CRM, 1С (если мы говорим про хороший интернет-магазин). Также нередко формируются запросы на перезапись тех или иных данных. Например, изменилась цена, либо товар закончился. Необходимо тщательно анализировать этот обмен данными, чтобы выяснить, что из этого нагружает сервера сильнее всего (или не загружает, но замедляет). Нередко причиной замедлений становится использование кластера master-master.

Кэш (сервер)

Наиболее оптимальный вариант – хранить кэш в оперативной памяти, т.к. быстрее нее только L1-, L2- и L3-кэш процессора. Однако, в большинстве случаев кэш хранится на жестком диске, который (даже если вместо него используется SSD) в разы медленнее, чем оперативная память. Плюс к этому, в «вычислительной цепочке» он стоит еще и дальше, чем оперативная память.

Кэш (клиент)

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

Подгрузка файлов со сторонних ресурсов

Казалось бы, «а что тут можно сделать-то?». Многие из Вас сейчас будут очень сильно удивлены, но… НО ИХ МОЖНО ПЕРЕНЕСТИ НА ВАШ ХОСТИНГ! Неожиданно, правда? Да, не спорим, это не всегда возможно, но если возможно – почему не сделать? 

И т.д.

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

В 50 РАЗ, КАРЛ!!!


Подпишитесь на обновления
Лучшей оценкой нашего труда является ваша подписка на новые публикации. Мы очень постараемся быть интересными и обещаем не спамить.
 

Комментарии к статье

(0)
Читайте также