Почему это критичный сценарий
Обычная нагрузка на Moodle — 50–200 одновременных пользователей в течение дня, равномерно. Вступительный экзамен или итоговое тестирование — это 1 000–3 000 человек, которые заходят в систему в один и тот же час, иногда в одну и ту же минуту. Без подготовки сервер «падает» именно в момент, когда это недопустимо — на глазах у абитуриентов и комиссии.
Что обычно идёт не так
- База данных не выдерживает параллельных запросов — стандартный shared-хостинг рассчитан на десятки, не тысячи соединений
- Сессии теряются — студент отвечает на 15-й вопрос, сервер «зависает», страница перезагружается, ответы пропадают
- Кэш не настроен — каждый запрос идёт напрямую в БД вместо кэша, что в 10 раз увеличивает нагрузку
- Один тест на всех одновременно — если у всех студентов общий «дедлайн закрытия», нагрузка на отправку результатов приходится на одну секунду
Чек-лист подготовки сервера за 2 недели до события
- Нагрузочное тестирование. Запускаю симуляцию через JMeter или Locust на копии прод-сервера — эмулирую реальное число одновременных пользователей, ищу узкое место до того, как его найдут абитуриенты
- Redis для кэша сессий вместо файлового кэша — критично для параллельных сессий
- Тюнинг MariaDB/PostgreSQL — увеличение max_connections, настройка буферов под пиковую нагрузку
- Временное масштабирование сервера — на день экзамена арендуем более мощный VPS, после — возвращаемся на обычный тариф (экономия для заказчика)
- Растягивание дедлайна отправки по группам/потокам, чтобы не было одной секунды массовой отправки
- Резервный канал — план Б на случай сбоя: что говорим абитуриентам, как продлеваем тест без потери данных
Технические настройки самого теста
Использую «Adaptive mode» с ограничением попыток вместо «Free navigation» — это снижает нагрузку на сохранение состояния. Включаю автосохранение ответов каждые 60 секунд вместо сохранения только при переходе между вопросами — если связь оборвётся, студент не теряет прогресс.
Реальный кейс
Для регионального колледжа готовил вступительное тестирование на 2 400 абитуриентов в потоке из 6 волн по 400 человек. После нагрузочного тестирования и тюнинга сервер держал пиковую нагрузку с запасом 40% — экзамен прошёл без единого сбоя, что для приёмной комиссии было первым подобным опытом без эксцессов за 3 года.
Стоимость подготовки к массовому событию
Аудит + нагрузочное тестирование + тюнинг — от 50 000 ₽. Сопровождение в день события (онлайн на связи) — от 15 000 ₽.
Вывод
Массовое тестирование нельзя готовить «на глаз» — нужна симуляция нагрузки заранее, а не надежда, что обойдётся. Если у вас приближается вступительная кампания или массовый экзамен — напишите заранее, минимум за 2–3 недели до даты, чтобы успеть протестировать и поправить инфраструктуру.
Опишите задачу — расскажу, как решить её конкретно в вашем случае. Свяжитесь — разберём вместе.