Open-source и свой сервер 4 мин чтения

Сайт упадёт в день рекламы? Проверьте его JMeter заранее

Сайт магазина может упасть в день рекламы или Чёрной пятницы. Разбираем бесплатный JMeter с открытым кодом: что измерять, как читать отчёт и как тестировать так, чтобы это не стало нарушением закона.

Open SourceНагрузочное тестированиеJMeterDevOps
Коротко. Apache JMeter это бесплатный инструмент с открытым кодом (лицензия Apache-2.0, написан на Java), который имитирует множество одновременных посетителей и показывает, при какой нагрузке сайт начинает отвечать медленно или с ошибками. Запускать его нужно до рекламы, распродажи или запуска бота, на своём сайте и в заранее согласованное время. Ниже: что мерить, как читать отчёт и где проверка превращается в проблему с законом.

Почему сайт падает именно в день события

Вы неделю готовили распродажу, блогер выложил пост. А через двадцать минут страница корзины грузится по полминуты, часть покупателей видит ошибку, остальные уходят к конкурентам.

Причина обычно в том, что сайт никогда не видел сразу много людей. В обычный день на нём пять человек в минуту, и он работает хорошо. Что будет при пятидесяти, никто не проверял. Узкое место может оказаться где угодно: слабый тариф хостинга, медленный запрос к базе, плагин в магазине, платёжный модуль. Найти его в день пика поздно. Найти за неделю до пика можно, и для этого есть нагрузочное тестирование.

Что такое JMeter

Это проект Apache Software Foundation. Репозиторий: github.com/apache/jmeter, около 9,5 тысячи звёзд, активные коммиты в начале октября 2026 года. Последний стабильный релиз на момент проверки 5.6.3, он вышел в январе 2024 года. Работает на Java 8 и новее.

Программа создаёт виртуальных пользователей, которые ходят по вашему сайту так, как вы им задали: открыли главную, выбрали товар, положили в корзину. Умеет HTTP и HTTPS, а ещё SOAP, FTP, базы через JDBC, LDAP, очереди JMS и почтовые протоколы. Архитектура построена на плагинах, поэтому возможности можно расширять. На выходе получаются таблицы и графики.

Русского интерфейса нет: в репозитории переводы на немецкий, французский, испанский, японский, китайский и другие языки, русского файла локализации я не нашёл.

Что измерять и как читать результат

Три показателя решают почти всё.

Время ответа. За сколько сервер отдаёт страницу. Смотрите на верхние процентили, 90-й и 95-й. Среднее значение скрывает тех, кто ждал в десять раз дольше остальных, а ждут обычно именно покупатели в пик.

Доля ошибок. Сколько запросов закончилось кодами 5xx, таймаутами или обрывом соединения. Даже один процент ошибок на странице оплаты уже потерянные заказы.

Третий показатель, пропускная способность: сколько запросов в секунду сервер переварил. Если вы увеличиваете число виртуальных пользователей, а пропускная способность перестаёт расти и при этом растёт время ответа, вы нашли потолок. Это и есть главный результат теста: цифра, до которой сайт держится.

Сравните этот потолок с ожиданием. Допустим, реклама может привести за час втрое больше людей, чем вы видите в самый загруженный обычный час. Это прикидка, свои цифры возьмите из метрики. Если потолок ниже ожидаемого пика, решать надо до запуска: кэш, оптимизация запросов, тариф посильнее.

Как провести тест по шагам

Сценарий собирают в графическом окне. Документация проекта прямо говорит, что оно нужно только для создания и отладки сценария, а нагрузочный прогон надо запускать из командной строки. В окне программа тратит лишние ресурсы.

Типичная команда выглядит так: jmeter -n -t scenario.jmx -l result.jtl -e -o report. Ключ -n включает режим без окна, -t задаёт файл сценария, -l пишет сырые результаты, -e и -o строят готовый HTML-отчёт с графиками. Эту же команду можно встроить в CI.

Нагрузку наращивают ступенями: сначала немного пользователей, потом больше, каждый раз с паузой. Так видно, на какой ступени время ответа пошло вверх. Если одной машины мало, у JMeter есть распределённый режим: один управляющий узел и несколько рабочих. Версии JMeter и Java на всех машинах должны совпадать, а сеть между ними нужно настроить.

Во время прогона документация советует не держать окна просмотра результатов в реальном времени, они съедают ресурсы. И следите, чтобы сама машина с JMeter не стала узким местом.

Что важно учесть: ограничения и закон

Главное. Нагрузочно тестировать можно только свой сайт или чужой с письменного согласия владельца и хостинг-провайдера. Те же запросы на чужой сайт без согласия выглядят как атака. В Уголовном кодексе есть статья 272 «Неправомерный доступ к компьютерной информации» и статья 273 «Создание, использование и распространение вредоносных компьютерных программ» (текст статьи 272 на consultant.ru). Подпадает ли под них конкретный тест, скажет юрист. Это вопрос к специалисту до начала работ.

Предупредите хостинг-провайдера: на общем хостинге всплеск запросов может сработать как сигнал о нападении, и аккаунт заблокируют, а у многих провайдеров на нагрузочные тесты есть свои правила. Не гоняйте тест по боевой системе в рабочие часы без плана: если сайт упадёт, упадёт вместе с живыми заказами. Лучше сделайте копию сайта на отдельном сервере и тестируйте её ночью или в согласованное окно. Чужие платёжные страницы и API не нагружайте вообще.

Теперь о технических ограничениях. Тест на копии даёт приблизительную картину, если железо отличается от боевого. JMeter не рисует страницу в браузере и не выполняет JavaScript, поэтому тяжёлый фронтенд он не покажет. Сценарий нужно писать аккуратно, иначе он проверит не то, что делают реальные покупатели. Из альтернатив известны k6 и Locust: сценарии в них пишутся кодом, и если команда привыкла к скриптам, они могут подойти удобнее.

Что можно сделать уже сейчас

Запишите, когда у вас ближайшее событие и сколько людей вы реально ждёте. Без этой цифры тест бессмыслен.

Посмотрите в метрике ваш самый загруженный час и главные пути покупателя: главная, каталог, карточка, корзина, оплата. Эти пять страниц и станут сценарием.

Прогоните ручную проверку бота и сайта перед запуском: формы, оплата, письма. Нагрузка бессмысленна, если корзина не работает и при одном человеке.

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

Мы проведём нагрузочное тестирование за вас

Мы проводим нагрузочное тестирование вашего сайта и готовим его к пику: пишем сценарии по вашим реальным путям покупателя, согласуем окно с вами и хостингом, прогоняем ступенчатую нагрузку и отдаём понятный отчёт. В нём указано, где узкое место, до скольких посетителей сайт держится и что чинить в первую очередь. Дальше можем исправить найденное. Подробнее на странице DevOps и инфраструктура.

Частые вопросы

JMeter платный?

Нет. Лицензия Apache-2.0, использовать можно бесплатно, в том числе в коммерческих проектах. Платить придётся за сервер, с которого идёт нагрузка, и за время специалиста.

Можно проверить сайт конкурента?

Нет. Только свой или с письменного согласия владельца и хостера. По вопросам ответственности обращайтесь к юристу.

Хватит ли одного компьютера?

Для небольшого магазина часто да. Если нужно имитировать очень много посетителей, используют распределённый режим на нескольких машинах. Заранее проверьте, что сама машина с JMeter не упирается в процессор или сеть.

Коротко о главном

Падение сайта в день рекламы стоит дороже недели подготовки. JMeter позволяет заранее узнать потолок: при какой нагрузке вырастет время ответа и начнутся ошибки. Тест проводят только на своём сайте или с письменного согласия, предупредив хостинг и не трогая боевую систему в рабочие часы.

Если у вас скоро реклама, распродажа или запуск бота, напишите мне в Telegram кодовое слово «НАГРУЗКА» и дату события. Обсудим, что проверить и как это сделать безопасно.

Ещё open-source для бизнеса

Эта статья — часть каталога бесплатных решений, которые я разворачиваю на вашем сервере под ключ: CRM, аналитика, документы, почта, безопасность, магазины, AI.

Услуги по теме

Что я делаю для бизнеса

  • Боты в Telegram, MAX, VK
  • Автоматизация процессов и CRM
  • Аналитика и дашборды
  • Сайты и лендинги под ключ

Бесплатно: чек-лист «Готов ли ваш бизнес к 152-ФЗ»

12 пунктов, которые проверяют готовность за час: данные, согласия, уведомление в РКН, локализация, защита. Отметьте, что уже сделано, и увидите дыры, за которые сейчас штрафуют.

Готовы обсудить вашу задачу?

Бесплатная консультация — разберём, как внедрить это в вашем бизнесе под ключ. Без форм, пишите напрямую.

Пишу о разработке, ИИ и законах для бизнеса

Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.

Готовые решения под ключTurnkey solutionsSoluciones llave en mano交钥匙解决方案Түлхүүр гардуулах шийдэл 451 готовых IT-решений для бизнеса451 ready-made IT solutions for business451 soluciones IT listas para empresas451 个面向企业的现成 IT 解决方案Бизнест зориулсан 451 бэлэн IT шийдэл Автоматизация, боты, AI, 152-ФЗ и платформы · бесплатная консультацияAutomation, bots, AI, data privacy and platforms · free consultationAutomatización, bots, IA, privacidad de datos y plataformas · consulta gratis自动化、机器人、AI、数据合规与平台 · 免费咨询Автоматжуулалт, бот, AI, өгөгдлийн хамгаалалт ба платформ · үнэгүй зөвлөгөө Смотреть каталогView catalogVer catálogo查看目录Каталог үзэх