В этой статье на реальных кейсах из разных областей мы разберем, почему сайты не справляются с увеличением нагрузки.
В целях соблюдения NDA мы не называем имена клиентов, а также опускаем детали, которые могут их раскрыть.
Почему сайты не справляются с возрастающей нагрузкой
По нашему опыту медленная работа или недоступность сайта при увеличении нагрузки вызваны:- проблемы с кодом – 55% случаев;
- неоптимальная архитектура – 25% случаев;
- нехватка мощностей сервера – 15% случаев;
- DDoS-атаки – 5% случаев.
Кейс: проблемы с кодом
Ситуация Сайт онлайн-кинотеатра в целом работал хорошо, но иногда подвисали страницы с фильмами.
Однако когда после рекламы на сайт пришло в 4 раза больше пользователей, чем обычно, он пошел вниз.
Мы профилировали код и выяснили, что киносервис не хранит данные о фильмах в собственной базе данных, а каждый раз собирает страницу фильма по частям онлайн, создавая 1000 обращений к внешним ресурсам.
Из-за этого страница загружалась от 1,5 до 2 секунд. С всплеском трафика количество запросов к внешним сервисам выросло в сотни раз и сайт фильма упал.
Решение Выявив проблему, мы связались с разработчиками заказчика и поработали с ними над оптимизацией кода.
Теперь страницы с фильмами генерируются в 20 раз быстрее — за 50-60 мс — и больше не зависают, а сайт не крашится при росте трафика.
Кейс: неоптимальная архитектура приложения
Ситуация К нам обратился интернет-магазин алкогольной продукции.
У клиента была распродажа, и трафик был выше обычного.
Без какой-либо закономерности сайт периодически вылетал и отображал ошибку 500. В ходе поиска мы поняли, что сама архитектура приложения не справляется с возросшей нагрузкой.
Интернет-магазин работал на одной из популярных CMS, к которой было подключено множество тяжелых модулей.
Даже при обычной нагрузке модули загружали базу данных, отправляя к ней множество запросов.
Всплеск трафика привел к тому, что количество запросов к базе данных стало исчисляться миллионами.
Это перегружало базу данных, и сайт периодически падал.
Решение На рефакторинг кода времени не было — нужен был инструмент, который мог бы помочь прямо сейчас.
По договоренности с заказчиком мы отключили часть тяжелых модулей.
После этого некоторые функции на сайте стали недоступны, например, пользователи не могли найти определенный товар через поиск, но нагрузка на внутренние сервисы значительно снизилась.
Это предотвратило сбой сайта до окончания распродажи.
Кейс: нехватка мощностей сервера
Ситуация На поддержку пришел портал для школьников.
В часы пик посещаемость ресурса увеличивалась со 100 до 300 тысяч пользователей в минуту и сайт загружался медленно.
Заказчик хотел решить эту проблему, а также подготовить портал к сентябрю, когда дети пойдут в школу и посещаемость увеличится в 5 раз.
Изначально при скачках нагрузки веб-сервер выдавал сообщения об отсутствии воркеров типа worker_connections. Мы скорректировали количество воркеров и оптимизировали настройки веб-сервера.
Но тут мы столкнулись с новым ограничением — в системе начали заканчиваться TCP-порты.
Решение Эту проблему можно решить, увеличив количество серверов.
По договоренности с заказчиком мы добавили еще три сервера и настроили Round robin DNS. Решение сработало — в сентябре посещаемость в часы пик выросла до 1,5 млн человек, и сайт справился с этой нагрузкой.
Кейс: DDoS-атаки
Ситуация Мы поддержали мебельный магазин.
Однажды во время мониторинга мы заметили, что сайт получает огромный трафик.
Внезапно трафик увеличился с 1000–1500 человек в минуту до 12 000. Для этого не было никаких оснований: заказчик не размещал рекламу и не проводил распродажи и акции.
Ошибки со стороны архитектуры, кода и инфраструктуры были сразу исключены — когда мы выставляли на поддержку, мы проверяли и настраивали систему.
Мы посмотрели логи.
Ничего подозрительного мы не обнаружили: похоже, запросы создавались обычными пользователями.
Однако огромный и необъяснимый трафик, который продолжал расти, натолкнул на мысль, что интернет-магазин подвергся DDoS-атаке с «умными» ботами.
Мы сотрудничаем с компанией, которая защищает сайт от подобных атак, и на случай экстренной ситуации разработали четкий алгоритм действий.
Решение Мы предложили заказчику воспользоваться услугами нашего партнера.
Он согласился, и мы поставили объект под охрану.
Предположение о DDoS-атаке подтвердилось: в интерфейсе сервиса защитника мы увидели, как отсекался трафик, генерируемый ботами.
При этом посещаемость мебельного интернет-магазина вернулась к нормальным значениям.
Почему сайты вылетают при увеличении нагрузки и что с этим делать
Замедление или недоступность сайта при увеличении нагрузки чаще всего вызваны ошибками в коде, неоптимальной архитектурой и неправильными настройками ИТ-инфраструктуры.Проблем в работе ресурса можно избежать, если заранее подготовить его к высоким нагрузкам:
- Провести аудит и нагрузочное тестирование для определения лимита сайта и выявления узких мест в инфраструктуре,
- По результатам аудита и нагрузочного тестирования усилить ресурс: провести рефакторинг кода, оптимизировать длинные запросы, перестроить ИТ-инфраструктуру или добавить ресурсы.
В конце концов, сайт может никогда не подвергнуться атаке, а за услугу придется платить каждый месяц.
Необходимо заранее правильно подготовить инфраструктуру к притоку пользователей, но это происходит не всегда.
Что делать, если нагрузка уже резко возросла и все вот-вот рухнет? Рассказываем в статье «Что делать, если завтра Черная пятница, а ваши серверы не готовы» .
Иконки, используемые для иллюстрации icon8.ru Теги: #ИТ-инфраструктура #Системное администрирование #ИТ-компании #ИТ-компании #Высокая производительность #южный мост #высокая нагрузка #высоконагруженные проекты #высокая нагрузка
-
Google Останется Анонимным
19 Oct, 24 -
Трубчатый Наконечник
19 Oct, 24 -
Митгол Напортачил На Главной Странице
19 Oct, 24 -
Немцы Будут В Шоке :-) (Флешмоб)
19 Oct, 24 -
Siteanalyzer 2.2 - Бесплатный Аудит Сайта
19 Oct, 24