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

Пошаговая инструкция для Windows, macOS и Linux — с примерами и настройкой

Навигация по статье

Что такое нагрузочное тестирование?

Нагрузочное тестирование (англ. Load Testing) — это процесс симуляции большого количества пользователей на сайте, чтобы проверить, как он себя поведёт в условиях высокой нагрузки. Такая проверка помогает:

  • понять, сколько одновременных пользователей выдерживает сайт,
  • выявить узкие места в коде, БД или серверной части,
  • не допустить падения сайта при реальной атаке или пиковом трафике (например, во время рекламы).

Когда проводить нагрузочное тестирование? Например:

  • Перед запуском рекламной кампании или рассылки
  • Перед «Чёрной пятницей», новогодними скидками или распродажами
  • После переноса сайта на новый хостинг или сервер
  • Перед выпуском важного обновления

Что даёт нагрузочное тестирование?

  • Оценку реальной производительности
  • Понимание, при каком объёме трафика сайт начинает «тормозить»
  • Возможность подготовиться заранее — оптимизировать запросы, подключить кэширование, масштабировать сервер

Какие задачи мы разберём в этой статье

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

  • На Linux — через консольные инструменты: ab, wrk,k6,stress-ng
  • На Windows — с помощью k6, Artillery, PowerShell, Apache JMeter
  • На macOS — через Homebrew — ab, wrk, k6 , Artillery, Apache JMeter
  • На любой системе — Python — Locust

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

Нагрузочное тестирование сайта на Linux

Linux — идеальная среда для нагрузочного тестирования. Почти все нужные инструменты можно установить через пакетный менеджер, и запускать их прямо из терминала.

1. Apache Benchmark (ab)

Простейший инструмент, который уже входит в пакет apache2-utils

sudo apt install apache2-utils  # Для Ubuntu/Debian
ab -n 1000 -c 50 https://example.com/
  • -n 1000 — всего 1000 запросов
  • -c 50 — 50 одновременных соединений

Выводит: среднее время ответа, успешные/неудачные запросы, скорость обработки. Подходит для быстрого теста.

2. wrk

Более современный и быстрый инструмент, написанный на C

sudo apt install wrk  # Для Ubuntu/Debian
brew install wrk      # Для macOS (если Linux-подобный Homebrew)
wrk -t4 -c100 -d30s https://example.com/
  • -t4 — 4 потока
  • -c100 — 100 соединений
  • -d30s — 30 секунд теста

Плюсы: высокая скорость, хороший отчёт.
Минусы: нет визуальной аналитики, нет JS-загрузки.

3. k6 — нагрузочное тестирование с кастомными сценариями

Инструмент нового поколения. Работает через JavaScript-сценарии и поддерживает тестирование REST API, форм, авторизации.

curl -s https://api.k6.io/install.sh | bash  # универсальная установка

Пример скрипта test.js:

import http from 'k6/http';
import { check, sleep } from 'k6';

export default function () {
  const res = http.get('https://example.com');
  check(res, { 'status 200': (r) => r.status === 200 });
  sleep(1);
}
k6 run test.js

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

4. stress-ng — стресс-тест всего сервера

Если вы хотите протестировать не сайт, а устойчивость всего VPS/сервера, используйте stress-ng:

sudo apt install stress-ng

stress-ng --cpu 4 --timeout 30s

Это создаст 4 потока, нагружающих CPU в течение 30 секунд. Можно также тестировать память, I/O, процессы, файлы и многое другое.

Выводы для Linux:

  • ab — для простого теста
  • wrk — быстрая проверка на реальной нагрузке
  • k6 — для сложных и реалистичных сценариев
  • stress-ng — для полной нагрузки на систему


Нагрузочное тестирование сайта на Windows

В Windows также можно проводить нагрузочные тесты с помощью кроссплатформенных CLI-инструментов, GUI-программ и PowerShell. Здесь не нужно использовать WSL или виртуалки — всё работает нативно.

1. Установка k6

Официальная ссылка на установку

  1. Скачайте .zip с GitHub Releases
  2. Распакуйте и добавьте путь к k6.exe в переменную среды PATH
  3. Проверьте запуск: k6 version

Запустите такой же скрипт, как на Linux (test.js):

k6 run test.js

Плюсы: подробная аналитика, кроссплатформенность

2. Artillery (через Node.js)

Ещё один популярный CLI-инструмент, основанный на YAML-сценариях.

npm install -g artillery

Пример запуска:

artillery quick --count 20 -n 10 https://example.com/

Также можно писать сценарии в YAML:

config:
  target: "https://example.com"
  phases:
    - duration: 60
      arrivalRate: 10
scenarios:
  - flow:
    - get:
        url: "/"

Плюсы: WebSocket, REST, GraphQL поддержка. Минусы: требуется Node.js и знание YAML.

3. PowerShell-скрипт для простого теста

Если не хочется устанавливать ничего — можно воспользоваться обычным PowerShell-циклом:

for ($i=0; $i -lt 100; $i++) {
  Invoke-WebRequest -Uri "https://example.com" -UseBasicParsing
}

Это создаёт 100 последовательных запросов к сайту. Работает медленно, но даёт базовое представление.

4. Apache JMeter (GUI-интерфейс)

Apache JMeter — классический инструмент с визуальной настройкой нагрузочного теста.

  1. Скачайте JMeter с сайта
  2. Запустите jmeter.bat (Java обязателен)
  3. Создайте тест-план → Thread Group → HTTP Request → укажите URL

Наглядно, гибко, удобно для сложных сценариев. Подходит для QA и тестирования REST API, логинов, нагрузок на формы и базы данных.

Выводы для Windows:

  • k6 — консольный, быстрый, сценарный
  • Artillery — удобен в YAML-сценариях
  • JMeter — лучший визуальный инструмент
  • PowerShell — простой и встроенный способ проверки


Нагрузочное тестирование сайта на macOS

macOS отлично подходит для тестирования: в системе доступен терминал, поддержка Brew, и большинство инструментов из Linux/Windows запускаются без проблем.

1. Установка Homebrew (если не установлен)


/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Проверьте: brew --version

2. Установка wrk через brew

brew install wrk

Запуск:

wrk -t2 -c100 -d30s https://example.com

3. Установка k6 на Mac

brew install k6

Пример скрипта тот же, что в Linux/Windows — в файле test.js:

k6 run test.js

4. Apache Benchmark (ab)

Пакет входит в httpd:

brew install httpd

Запуск:

ab -n 1000 -c 50 https://example.com/

5. Artillery через Node.js

Установите Node.js (если ещё не установлен):

brew install node

Затем:

npm install -g artillery

Далее всё аналогично Windows и Linux — можно запускать через CLI или YAML-файлы.

6. Apache JMeter (графический интерфейс)

macOS поддерживает JMeter как и Windows:

  • Скачайте ZIP-архив с официального сайта
  • Распакуйте, откройте bin/jmeter
  • Создайте Thread Group, добавьте HTTP-запрос — и запускайте.

Выводы для macOS:

  • brew + wrk / k6 / ab — идеальный CLI-набор
  • JMeter — для визуального подхода
  • Artillery — для гибких нагрузок с поддержкой WebSocket


Locust — нагрузочное тестирование на Python (Любая система)

Locust — это open-source инструмент, который позволяет писать пользовательские сценарии на Python и запускать нагрузку от тысяч виртуальных пользователей.

Пример установки:

pip install locust

Пример простого сценария (locustfile.py):

from locust import HttpUser, task

class WebsiteUser(HttpUser):
    @task
    def load_main(self):
        self.client.get("/")

Запуск:

locust -f locustfile.py --host=https://example.com

Откроется веб-интерфейс на http://localhost:8089, где вы можете указать количество пользователей и уровень нагрузки.

Как понять, что сайт не справляется с нагрузкой

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

  • Время отклика превышает 2–3 секунды даже при средней нагрузке
  • Ошибки 500/502/503 в логах или в консоли клиента
  • Рост отказов (Failed requests) при увеличении пользователей
  • Нагрузка на сервер (CPU/DB) скачет до 90–100%
  • Зависание фронтенда (долгая загрузка JS/CSS)

Что делать, если сайт «ложится» под нагрузкой

1. Включите кэширование

Кэш — первое, что нужно сделать. Даже 10% кэшированных страниц разгружают сервер в 2–3 раза.

  • WordPress: плагины WP Super Cache, LiteSpeed Cache
  • Nginx: FastCGI Cache
  • Laravel/Symfony: встроенные кэши Blade, Twig, route и т.п.

2. Подключите CDN

CDN (Cloudflare, jsDelivr, BunnyCDN) разгружает трафик на изображения, скрипты и статичные файлы. Это уменьшает нагрузку на сервер и ускоряет загрузку страниц.

3. Проверьте базу данных

  • Оптимизируйте SQL-запросы (избавьтесь от JOINов в цикле)
  • Добавьте индексы в поля, по которым часто идёт выборка
  • Очистите мусорные таблицы/опции

4. Упростите HTML и уберите лишние скрипты

Уменьшите количество HTTP-запросов. Пересоберите фронтенд через Webpack/Vite. Проверьте вес страницы в Lighthouse/PageSpeed.

5. Используйте асинхронные очереди

Если на странице отправляется почта, обрабатываются файлы или идёт авторизация — отложите эти действия в очередь (RabbitMQ, Redis queue, Laravel Horizon и др.).

6. Горизонтальное масштабирование

Если нагрузка постоянно растёт — распределите серверную нагрузку:

  • Фронт и админка — на разных серверах
  • БД — на выделенном инстансе
  • Использование балансировщика (например, Nginx + Keepalived)

Заключение

Нагрузочное тестирование — это не только про «сломать ради интереса». Это ваш шанс найти слабые места до того, как это сделает толпа пользователей. Потратьте 15 минут на проверку — и сэкономите себе часы паники в момент пика.

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

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

Мы рассмотрели лучшие инструменты для нагрузочного тестирования на всех популярных системах: Windows, Linux и macOS, а также универсальное на Python

Нужна помощь или хотите больше?

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

→ Подробнее об услугах

А если вы хотите подробную статью о каком-либо инструменте (например, Locust, wrk, k6) — напишите об этом в комментариях. Мы сделаем отдельную публикацию с примерами, настройками и полезными советами.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 3

Оценок пока нет. Поставьте оценку первым.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *