23000 человек написали онлайн-диктант 8 апреля 2017. Как это получилось?

23000 человек написали онлайн-диктант 8 апреля 2017. Как это получилось?

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

фото: Валерий Мельников, РИА Новости

Фонд «Тотальный диктант» начал продвижение акции в феврале — тогда стартовали онлайн-занятия по подготовке и пошли первые публикации в СМИ. Каждый урок смотрели в среднем 13990 человек — конечно, в день диктанта предполагалась еще более значительная нагрузка на сайт. В прошлом году во время диктанта на сервера обрушилась DDoS-атака, из-за которой какое-то время сайт был недоступен. За работоспособность сайта отвечали:

  • CMS «1С-Битрикс» (функциональность и интерфейс);
  • «Битриксоид» (техническая поддержка);
  • «Сервионика» (облачный хостинг);
  • научно-технический центр «Атлас» (защита от ботов и DDoS-атак);
  • ITSumma (подготовка ИТ-инфраструктуры и серверов);
  • Stepik (платформа для онлайн-диктанта).
Подготовка сайта к нагрузке

До старта наших работ проект был размещен на простом виртуальном сервере с такими характеристиками: 2 ядра CPU, 4 Гб оперативной памяти, HDD.

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

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

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

  1. Все А-записи сайта были переключены на IP антиддоса.
  2. Настройки почтового сервера были изменены таким образом, чтобы в заголовках исходящих писем нигде не фигурировали реальные IP проекта.
  3. На стороне антиддос были настроены фильтрация всех поступающих на сайт запросов и их последующее проксирование на сервера проекта.

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

  1. Настроили репликацию БД и синхронизацию файлов проекта со старого сервера на новый.
  2. В момент переключения включили проксирование всех запросов со старого сервера на новый с помощью nginx.
  3. Отключили репликацию БД.

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

Нагрузка в день акции

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

Стартовал диктант 8 апреля 2017 года в 15:00 по Владивостоку (GMT +10). На старте нагрузка была минимальной — порядка 20 запросов в секунду на динамику. Но расслабляться, конечно же, не стоило. К самой крупной трансляции, последней, в 14:00 Мск мы выделили больше памяти под кеширование в Memcache, вынесли туда же сессии, чтобы меньше была нагрузка на диски. Трансляция прошла без каких-либо зафиксированных проблем, нагрузка была контролируемой, работало всё быстро, корректно.

Вот как выглядела картина нагрузок в тот день (время на графиках иркутское, GMT +8).

Общий итог

Все старались! Данные по мониторингам нагрузок мы передали коллегам из «Тотального диктанта» для составления плана на будущий год.

8 апреля в интернете следили за акцией 90000 зрителей, написали диктант онлайн 23000 человек. С 9 по 18 апреля сайт посетили 454798 уникальных пользователей, которые просмотрели четыре миллиона страниц — участники узнавали свои оценки и смотрели вебинары с разбором ошибок. Подготовку к диктанту 14 апреля 2018 года организаторы уже начали — подтягивайтесь тоже (повторяйте правила русского языка на онлайн-курсах), всем диктант!

📎📎📎📎📎📎📎📎📎📎