В период пиковой посещаемости все желающие смотрели трансляции и писали «Тотальный диктант» онлайн

Тотальный диктант

ITSumma обеспечила работоспособность сайта всемирной акции «Тотальный диктант — 2017». 8 апреля диктант на сайте написали 23000 человек, а всего в интернете следили за акцией 90000 зрителей.

Когда коллеги из «Тотального диктанта» обратились к нам за помощью в подготовке серверов проекта к проведению мероприятия, проект был размещен на простом виртуальном сервере с такими характеристиками: 2 ядра CPU, 4 Гб оперативной памяти, HDD.

В прошлом году во время диктанта на сервера обрушилась ДДОС-атака, из-за которой какие-то время сайт был недоступен. В этом году было решено заранее подготовиться к подобным проблемам.

Изначально от команды проекта было предположение, что во время проведения диктанта на сервер будет поступать 120 RPS, и каждую минуту на сайт будет заходить 1000 посетителей. Чтобы выяснить, сколько RPS сервер сможет выдержать сейчас, и какая конфигурация серверов потребуется для пиковой нагрузки, было проведено нагрузочное тестирование сервера Яндекс.Танком. Итоговая конфигурация основного и резервного серверов выглядела так: 48 ядер CPU, 128 Гб оперативной памяти, 250 Гб SSD.

Сначала, на период подготовки проекта к пиковой нагрузке, был сделан апгрейд виртуального сервера с сайтом — чтобы можно было провести все нужные оптимизации как по части настроек, так и по части кода.

Параллельно с проведением нагрузочного тестирования шел процесс подключения антиддос-провайдера к сайту. Как он выглядел:

1)    Все А-записи сайта были переключены на IP антиддоса.

2)    Настройки почтового сервера были изменены таким образом, чтобы в заголовках исходящих писем нигде не фигурировали реальные IP проекта.

3)    На стороне антиддос были настроены фильтрация всех поступающих на сайт запросов и их последующее проксирование на сервера проекта.

Изначально новые сервера планировалось разделить, и один сервер сделать как основной, а другой — как резервный, на случай падения основного. Но в ходе проведения нагрузочных тестов для увеличения общей ёмкости системы было решено задействовать резервный сервер для обработки запросов на backend (в нашем случае — php-fpm). Балансировка запросов на backend между основным и резервным серверами осуществлялась с помощью nginx на основном сервере. В качестве общего хранилища сессий был настроен MySQL — 1C-Битрикс позволяет это сделать без необходимости модификации настроек сервера.

За полторы недели до дня проведения диктанта проект был переключен на новые сервера. Для этого на них сначала была создана полная копия старого сервера — включая все настройки ПО, файлы сайта, базы данных. Сам процесс переключения выглядел так:

1)    Была настроена репликация БД и синхронизация файлов проекта со старого сервера на новый.

2)    В момент переключения было включено проксирование всех запросов со старого сервера на новый с помощью nginx.

3)    Репликация БД была отключена.

4)    На стороне антиддос-провайдера были изменены адреса целевых серверов, чтобы весь трафик поступал на новые сервера.

После переноса сайта было проведено итоговое нагрузочное тестирование — эмулировалась нагрузка в 500 RPS, т.к. организаторы предположили, что посетителей будет больше, чем они думали изначально. В результате тестов обнаружилось, что из-за использования MySQL для хранения сессий нагрузка на диски оказалась достаточно велика, и в пиках это может привести к проблемам. Поэтому было решено перенастроить сессии на хранение в memcache — проведенное после этого нагрузочное тестирование показало, что при ожидаемой нагрузке на текущем железе «узких» мест объявиться не должно.

Пиковый RPS, достигнутый в ходе проведения «Тотального диктанта», составлял 250. При этом на обоих бэкендах не наблюдалось ни нехватки ресурсов, ни других проблем.

Ольга Ребковец
руководитель проекта «Тотальный диктант»
На сайте можно было написать диктант в прямом эфире с 2014 года, но без проблем не обходилось. Например, в прошлом году сайт подвергся масштабной DDoS-атаке, что помешало многим желающим принять участие в акции. В этом году мы избежали возможных атак. Специалисты ITSumma подготовили наш сайт к предстоящей нагрузке, заранее протестировали и помогли настроить все самым эффективным образом, что защитило наш сайт в период пиковой посещаемости, когда все желающие смотрели трансляции и писали диктант онлайн.