Пошаговая инструкция: как провести стресс-тест и функциональное тестирование сервера

Иван Корнев·6 октября 2026·⏱4 мин

Чтобы понять, как провести стресс-тест и функциональное тестирование сервера, используйте утилиты stress-ng, ab и curl. Это гарантирует, что инфраструктура выдержит нагрузку и будет корректно отвечать.

Оглавление

Краткая инструкция по тестированию

Для быстрой проверки устойчивости вашего сервера выполните следующие базовые действия:

  1. Аппаратный тест (CPU, RAM): Установите утилиту командой sudo apt install stress-ng и запустите безопасную проверку: stress-ng --cpu 2 --vm 2 --timeout 60s. Это создаст 2 нагрузочных потока на процессор и 2 на виртуальную память строго на 60 секунд.
  2. HTTP-нагрузка: Установите инструмент командой sudo apt install apache2-utils и выполните тест: ab -n 1000 -c 10 http://ваш-домен.ru/. Будет отправлено 1000 запросов всего, по 10 одновременных. URL обязательно должен содержать протокол (http:// или https://), иначе команда завершится ошибкой.
  3. Функциональная проверка: Используйте команду curl -I http://ваш-домен.ru/ для получения HTTP-заголовков и кода ответа (например, 200 OK). Это подтвердит, что сервер отдает правильный ответ, а не просто формально выдерживает нагрузку.

Подготовка и юридические ограничения

Все указанные инструменты (stress-ng, apache2-utils, curl) являются открытым программным обеспечением, доступны в стандартных репозиториях Linux (apt), не требуют оплаты и не заблокированы на территории РФ.

Юридическая ответственность: Проведение стресс-тестирования (нагрузочного тестирования) чужого сервера или сервиса без письменного разрешения владельца квалифицируется как неправомерный доступ или создание помех в работе инфраструктуры (фактически DDoS). Это подпадает под статьи 272 и 273 УК РФ. Тестировать можно только свои серверы или те, на которые есть явное письменное согласие.

Риски для продакшена: Перед запуском stress-ng на рабочем сервере обычно рекомендуется сделать резервную копию данных и предупредить команду, так как высокая нагрузка может привести к деградации производительности других сервисов на той же машине.

Мониторинг: Для контроля состояния сервера во время теста откройте второй терминал и запустите htop или dstat, чтобы в реальном времени видеть загрузку ядер и потребление оперативной памяти.

Детальный аппаратный стресс-тест

Утилита stress-ng позволяет безопасно проверить устойчивость аппаратных ресурсов. Базовая команда для безопасного аппаратного теста:

stress-ng --cpu 2 --vm 2 --timeout 60s

Особенность работы с памятью: При тестировании памяти (--vm) утилита stress-ng, запущенная с правами root, может временно изменять системные настройки, чтобы сделать стрессоры «неубиваемыми» при нехватке памяти. Без прав root процесс будет остановлен системным механизмом OOM Killer (Out of Memory).

Риск повреждения данных: При использовании стресс-теста диска (например, stress-ng --hdd) без предварительной резервной копии интенсивная запись может спровоцировать сбой на изношенных накопителях, что приведет к потере данных или повреждению файловой системы.

Риск полного отказа: Во время агрессивного стресс-теста сервер может перестать отвечать по SSH. Это потребует ручного вмешательства через консоль провайдера (VNC/IPMI) или жесткую перезагрузку, что ведет к простою и потере несохраненных данных.

Нагрузочное тестирование веб-сервера

Для проверки устойчивости веб-сервера к HTTP-запросам используется Apache Bench (ab). После установки (sudo apt install apache2-utils) выполните команду:

ab -n 1000 -c 10 http://ваш-домен.ru/

Параметры команды означают: -n 1000 (1000 запросов всего) и -c 10 (10 одновременных запросов).

Важно: URL должен обязательно содержать протокол (http:// или https://). Если указать просто домен, команда завершится ошибкой.

Функциональное тестирование

Функциональное тестирование проверяет, что сервер отдает правильный ответ, а не просто выдерживает нагрузку. Для этого используется утилита curl, встроенная в большинство дистрибутивов Linux.

Базовая команда для получения HTTP-заголовков и кода ответа:

curl -I http://ваш-домен.ru/

Ожидаемый результат при нормальной работе — код ответа 200 OK.

Если функциональный тест через curl возвращает код 502, 503 или 504 во время стресс-теста ab, это означает, что веб-сервер или приложение не справляются с нагрузкой и требуют оптимизации (например, увеличения числа воркеров или настройки кэша).

Частые ошибки

  1. Запуск ab без указания протокола. Попытка выполнить ab -n 1000 -c 10 example.com приведет к ошибке, так как протокол (http:// или https://) обязателен.
  2. Тестирование чужих ресурсов. Проверка IP-адресов или доменов без разрешения является уголовным преступлением в РФ (ст. 272, 273 УК РФ).
  3. Отсутствие резервной копии. Запуск stress-ng на продакшене без бэкапа создает риск потери данных при сбое накопителя во время теста диска.

FAQ

Что делать, если во время теста сервер перестал отвечать по SSH?
Это известный риск агрессивного стресс-теста. Для восстановления доступа используйте консоль провайдера (VNC/IPMI) или выполните жесткую перезагрузку, предварительно предупредив команду о возможном простое.

Какие коды ответов curl указывают на проблемы во время нагрузки?
Если во время стресс-теста ab утилита curl возвращает коды 502, 503 или 504, это означает, что веб-сервер или приложение не справляются с нагрузкой и требуют оптимизации (увеличения воркеров, настройки кэша).

Доступны ли указанные инструменты в России?
Да, утилиты stress-ng, apache2-utils и curl являются открытым программным обеспечением, доступны в стандартных репозиториях Linux (apt), не требуют оплаты и не заблокированы на территории РФ.