MMoodle.Expert
Все статьи
Технологии 8 мин чтения

Массовое онлайн-тестирование в Moodle: как выдержать 2000+ студентов одновременно

Вступительные экзамены, олимпиады, итоговое тестирование потоком — Moodle падает под нагрузкой, если не подготовить инфраструктуру заранее. Чек-лист подготовки.

Вступительные экзамены, олимпиады, итоговое тестирование потоком — Moodle падает под нагрузкой, если не подготовить инфраструктуру заранее. Чек-лист подготовки.

Почему это критичный сценарий

Обычная нагрузка на Moodle — 50–200 одновременных пользователей в течение дня, равномерно. Вступительный экзамен или итоговое тестирование — это 1 000–3 000 человек, которые заходят в систему в один и тот же час, иногда в одну и ту же минуту. Без подготовки сервер «падает» именно в момент, когда это недопустимо — на глазах у абитуриентов и комиссии.

Что обычно идёт не так

  • База данных не выдерживает параллельных запросов — стандартный shared-хостинг рассчитан на десятки, не тысячи соединений
  • Сессии теряются — студент отвечает на 15-й вопрос, сервер «зависает», страница перезагружается, ответы пропадают
  • Кэш не настроен — каждый запрос идёт напрямую в БД вместо кэша, что в 10 раз увеличивает нагрузку
  • Один тест на всех одновременно — если у всех студентов общий «дедлайн закрытия», нагрузка на отправку результатов приходится на одну секунду

Чек-лист подготовки сервера за 2 недели до события

  1. Нагрузочное тестирование. Запускаю симуляцию через JMeter или Locust на копии прод-сервера — эмулирую реальное число одновременных пользователей, ищу узкое место до того, как его найдут абитуриенты
  2. Redis для кэша сессий вместо файлового кэша — критично для параллельных сессий
  3. Тюнинг MariaDB/PostgreSQL — увеличение max_connections, настройка буферов под пиковую нагрузку
  4. Временное масштабирование сервера — на день экзамена арендуем более мощный VPS, после — возвращаемся на обычный тариф (экономия для заказчика)
  5. Растягивание дедлайна отправки по группам/потокам, чтобы не было одной секунды массовой отправки
  6. Резервный канал — план Б на случай сбоя: что говорим абитуриентам, как продлеваем тест без потери данных

Технические настройки самого теста

Использую «Adaptive mode» с ограничением попыток вместо «Free navigation» — это снижает нагрузку на сохранение состояния. Включаю автосохранение ответов каждые 60 секунд вместо сохранения только при переходе между вопросами — если связь оборвётся, студент не теряет прогресс.

Реальный кейс

Для регионального колледжа готовил вступительное тестирование на 2 400 абитуриентов в потоке из 6 волн по 400 человек. После нагрузочного тестирования и тюнинга сервер держал пиковую нагрузку с запасом 40% — экзамен прошёл без единого сбоя, что для приёмной комиссии было первым подобным опытом без эксцессов за 3 года.

Стоимость подготовки к массовому событию

Аудит + нагрузочное тестирование + тюнинг — от 50 000 ₽. Сопровождение в день события (онлайн на связи) — от 15 000 ₽.

Вывод

Массовое тестирование нельзя готовить «на глаз» — нужна симуляция нагрузки заранее, а не надежда, что обойдётся. Если у вас приближается вступительная кампания или массовый экзамен — напишите заранее, минимум за 2–3 недели до даты, чтобы успеть протестировать и поправить инфраструктуру.

Нужна помощь с Moodle?

Опишите задачу — расскажу, как решить её конкретно в вашем случае. Свяжитесь — разберём вместе.