0/5

«Черная пятница» как ЧП: почему сайты «падают» в дни больших распродаж

«Черная пятница» как ЧП: почему сайты «падают» в дни больших распродаж
время публикации: 12:00  01 сентября 2016 года
«Черная пятница» – праздник для любителей онлайн-шопинга, и зачастую настоящее ЧП для магазина. Поток посетителей возрастает во много раз, что вскрывает множество скрытых технических проблем. Как подготовиться к большой распродаже, чтобы и сайт не «падал», и покупатели были довольны?
«Черная пятница» как ЧП: почему сайты «падают» в дни больших распродаж

В дни больших распродаж нагрузка на сайты интернет-магазинов возрастает от 2 до 5 раз, но не каждый ресурс готов принять такое количество посетителей. Ни одна крупная акция в Рунете не обошлась без отзывов пользователей: «Хотели заказать товары со скидками, а сайты зависают». Ильяс Салихов  – технический директор группы компаний Интаро рассказывает о причинах, по которым онлайн-ресурсы ритейлеров не справляются с большим потоком покупателей, и дает советы по подготовке к распродажам.


На все 4 фактора

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

1. Логика работы сайта. К примеру, сетевой гипермаркет может давать разные цены в разных регионах, а процент скидки может зависеть от принадлежности потенциального покупателя к определенной целевой группе, от категории товаров, от способа доставки. Таким образом, каждая страница любого сложного ресурса состоит из большого количества разнородных данных и загружается дольше обычных. Другими словами, чем сложнее логика ресурса, тем проще его повесить. 

2. Качество реализации ресурса. Некоторые варианты написания сайта не подходят для ведения электронной торговли, а подходящие бывают выполнены некомпетентными программистами. Так, типичная ошибка, встречающаяся при аудите интернет-магазинов – выполняющиеся в цикле запросы к серверу базы данных. К примеру, вместо того, чтобы сразу «взять» из базы цену, цвет, размер и описание товара, система по отдельности запрашивает у сервера каждый блок информации. При резком увеличении посещаемости сайт, работающий подобным образом, «падает», не справившись с большим количеством дополнительных запросов сервера. 








3. Оптимальная настройка системного программного обеспечения. Качественно изменив стандартные настройки, можно в несколько раз увеличить производительность сайта. К примеру, в системах управления базами данных типа MySQL, PostgreSQL можно варьировать размер разных буферов, которые отвечают за память, выделяемую под выборку, сортировку и объединение данных из разных таблиц. По умолчанию, буферы небольшие и базе данных попросту «тесно», поэтому она медленно отвечает на запросы. Это как попытка собрать громоздкий шкаф в комнате площадью 2х2 метра: в итоге он будет собран, но времени уйдет больше, так как перемещения в пространстве ограничены. Так что программисту или системному администратору следует самостоятельно настроить используемое программное обеспечение оптимальным образом, чтобы оно быстро выполняло свои задачи. 

4. Параметры сервера или серверов, на которых развернут сайт. Услуги аренды хранилищ предоставляют хостинговые компании, их стоимость варьируется в зависимости от объема и мощности серверов. 

«Черная пятница» как ЧП: почему сайты «падают» в дни больших распродаж

Магазины с посещаемостью до 1000 человек в сутки могут использовать виртуальные серверы с выделенным root-доступом, так называемые VPS/VDS. Аренда VPS стоит несколько дороже, чем простой shared-хостинг (от 2000 до 10 000 рублей в месяц), потому что имеет преимущество: root-доступ позволяет вносить существенные изменения в настройки системы. Однако мощности VPS становится недостаточно, когда количество посетителей ресурса переваливает за  1000 человек в сутки. В этом случае сайт необходимо переводить на выделенный сервер, который разработчики между собой называют «железо». Его аренда обычно обходится компаниям в 10-30 тысяч рублей в месяц.
 
Один «железный» сервер способен, в среднем, обслуживать сайт с посещаемостью до 5000 посетителей в сутки. В процессе наращивания оборотов магазину понадобится арендовать у хостера новые мощности: 5-10 тысяч пользователей в сутки требуют использования 2-4 серверов, их количество будет увеличиваться условно пропорционально количеству клиентов. Однако магазины, как правило, арендуют серверные мощности только под стандартную ежедневную нагрузку, которых не хватает  на возросший поток посетителей в дни распродаж.


Следи за собой, будь насторожен

Для того, чтобы «держать руку на пульсе»,  IT-специалисты с первого дня работы магазина должны настроить средства мониторинга на серверах сайта. Такие инструменты, как Zabbix, Nagios, Munin позволяют отслеживать системные показатели серверов: загруженность процессора, свободное место на диске и в оперативной памяти, показатели работы системы управления базой данных. Для мониторинга «самочувствия» сайта на PHP с точки зрения пользователя (как быстро открываются страницы и не возникают ли на них ошибки) можно использовать Intaro Pinboard. Все перечисленные инструменты находятся в открытом доступе, но требуется определенная техническая подготовка, чтобы их установить и настроить под нужды проекта.

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

«Черная пятница» как ЧП: почему сайты «падают» в дни больших распродаж

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


… И за тестом погляжу

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

Так, бесплатный инструмент «Яндекс.Танк» воспроизводит действия клиентов из истории посещений и генерирует типичную нагрузку интернет-магазина. При этом, система способна эмулировать не 100 обычных человек в сутки, а, например, 10 или 100 тысяч посещений. Если говорить о ресурсах, то у одного опытного разработчика это тестирование занимает один рабочий день. 
В «идеальном мире» разработчики не перестают следить за работой сайта и в момент проведения акции.
Правильно настроенные сервисы мониторинга уведомляют о сбоях не только в те моменты, когда что-то сломалось, а сообщают заранее: когда наблюдают процессы «деградации» в работе системы, которые через некоторое время могут вывести систему из строя. Например, аномально быстро возрастает нагрузка на процессор или слишком быстро заполняется оперативная память на сервере. 


На POSTу

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

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

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

Ильяс Салихов  
Технический директор группы компаний Интаро


0
Реклама на New Retail. Медиакит