+7 495 230 03 03 8 800 222 50 03
DevOps

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

Задача — протестировать новый физический сервер, на котором предварительно установлена Ubuntu 22.04. Рассмотрим ниже решение данной задачи.

Инфраструктура

Имеем Bare-metal сервер с доступом через IMPISSH или напрямую. Тестировать можно и виртуальный сервер, для понимания выделенных лимитов. Установлена ОС Linux, в данном примере рассмотрим работу с ОС Ubuntu 22.04.

Тестирование выполняется с использования ПО Stress-ng. Стресс-тестирование удобно использовать и для облачных и для физических серверов. Если вы работаете в облаках, вы сможете понять реальную пропускную способность узла. Если разворачиваете систему на физическом железе — сможете убедиться, что с железом все в порядке.

Stress-ng — специализированная консольная утилита для проведения нагрузочного стресс-тестирования аппаратного обеспечения различными способами. Возможности, которыми обладает утилита stress-ng, довольно широки. Об этом свидетельствует огромное количество всевозможных опций, которыми её наделили разработчики. Но ключевой особенностью stress-ng является то, что это полноценный инструмент со встроенными тестами. В отличие от многих других аналогов, при выполнении теста не производится обращений к сторонним и/или внешним ресурсам. Таким образом, stress-ng абсолютно самодостаточна.

Установка

Утилита доступна практически в любом дистрибутиве Linux и находится в стандартном репозитории, устанавливается с помощью системы управления пакетами дистрибутива. Например, в Ubuntu:

sudo apt-get install stress-ng

Тестирование процессора

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

stress-ng --cpu 32 --sequential 8 --timeout 60s --metrics-brief

В данном тесте задействованы 32 потока для тестирования 32-поточного процессора. Количество потоков следует задавать в соответствии со спецификацией используемого процессора. В этом тесте stress-ng выполнит разные тесты из группы CPU в 32 потока, каждый длительностью в 60 секунд. Для тестирования будут последовательно использованы различные методы, описаны в документации к ПО. Например: математические операции, сортировки, шифрование, сжатие, поиск, работа со строками и т.п.

Статистика будет включать название теста и цифры по скорости выполнения операций. Абсолютные величины особого значения не имеют. Однако их стоит сравнивать с цифрами серверов аналогичной конфигурации. Особенно цифры в колонках bogo ops.

Тестирование оперативной памяти

Для оперативной памяти есть группа тестов, куда входят операции выделения, копирования и очистки памяти. Для проведения стресс-тест памяти выполним команду:

stress-ng --class memory --sequential 8 --timeout 60s --metrics-brief

Во время этого теста будем наблюдать другую картинку — большое количество оперативной памяти (и свопа) будет занято. После выполнения теста получим отчет проверки приблизительно следующего вида:

Проверка ОЗУ

Рисунок 1 — Проверка оперативной памяти

Упрощенный вариант запуска теста, предопределяем способ тестирования, объем данных и время работы.

stress-ng --vm 2 --vm-bytes 1G --timeout 60s
  • vm – тип тестирования памяти.
  • vm-bytes – объем данных для выполнения тестирования.
  • timeout – длительность тестирования.

Тестирование дисковой подсистемы

В stress-ng существует две группу тестов, которые стоит выполнить. Сначала – группа тестирования низкого уровня I/O устройств:

stress-ng --class io --sequential 8 --timeout 60s --metrics-brief
Проверка ОЗУ

Рисунок 2 — Проверка дисковой подсистемы

Далее необходимо запустить стресс-тест файловой системы. Он включает создание/удаление файлов и папок, перемещение по дереву файлов, создание ссылок, блокировки, переименование и т.п.

stress-ng --class filesystem --sequential 8 --timeout 60s --metrics-brief

Комплексное тестирование

Если необходимо провести комплексное стресс-тестирование, можно задействовать работу нескольких основных подсистем вместе одной командой:

stress-ng --cpu 4 --io 4 --vm 1 --vm-bytes 1G --timeout 60s --metrics-brief

Эта команда запустит тест для CPU в 4 потока, тест виртуальной памяти с размещением в ней одного гигабайта данных, а также 4 потока для тестирования операций ввода/вывода.

Что бы запустить тестирование всего «железа», используется команда:

stress-ng --sequential 0 --timeout 60s --metrics-brief

Эта команда запустит все тесты. После выполнения результат будет выведен в консоль. Во время выполнения команды сервер не нагружать другой работой.

Нужна помощь? Администрирование физических серверов мы осуществляем в рамках услуги администрирование серверов. Нагрузочное тестирование серверов, включая кластеры k8s мы осуществляем в рамках DevOps-услуг.

Дата публикации: 1 мая 2023
Не нашли ответа на свой вопрос?

Смотрите также

Обсуждение материала

  • Аноним

    Серьёзно? 32 ? Первый же пример в 99% не подойдёт в современности. С самого начала бесполезная информация! Зачем так? Ведь дальше уже норм.

    • https://efsol.ru/ EFSOL

      Предложите свой вариант)

  • Аноним

    Добрый день
    Провожу нагрузочное тестирование линукс сервера утилитой stress-ng. При тестировании памяти нагружается корневой раздел только. Не подскажете как нагрузить другой раздел и возможно ли это?

Содержание

Заказать звонок

Оставьте свои данные для того, чтобы специалист с вами связался.

*нажимая на кнопку, Вы даете согласие на обработку персональных данных
Быстрое внедрение включает:
На сервере установлено следующее ПО (доступно при подключении по протоколу RDP):
Также настроено:
Перед внедрением клиент предоставляет информацию о пользователях (логины и пароли). После завершения работ, клиенту высылается инструкция и ярлык для подключения.
Индивидуальное внедрение по ТЗ клиента обсуждается отдельно.