Чем тестировать сервера на Linux? Краткий обзор основных инструментов

28.10.2019
Чем тестировать сервера на Linux? Краткий обзор основных инструментов

Тестируя сервера с одинаковыми характеристиками, можно получать разные результаты. Так выходит потому, что провайдеры могут накладывать ограничения на свои виртуальные сервера. И, в зависимости от типа ограничений, будет изменяться стоимость и производительность “железа”.   

Чтобы точно знать возможности сервера, за который вы платите (и не переплачиваете ли), нужно правильно его тестировать. На IT-пятнице №17 Александр Майоров, инженер отдела системного администрирования и поддержки ключевых клиентов hoster.by, сделал обзор основных утилит для тестирования серверов на Linux. 

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

О каких подсистемах идёт речь?

  • Дисковая. В первую очередь обращаем внимание на время задержки, скорость передачи данных и число и число операций записи или чтения в единицу времени.
  • Процессорная. Основные метрики — тактовая частота, производительность. вычислительная мощность в единицу времени
  • Сетевая. Главный показатель — пропускная способность входящего и исходящего трафика.
Есть ряд эталонных утилит и программ, которые своего рода стандарты измерения — как килограмм и метр, только в тестировании. Если вы будете использовать их и на основе измерения сообщать провайдеру, чего вы хотите от сервера, то будете поняты.
Иногда тестирование может не определить источник проблемы, но это не значит, что её нет. Например, если вы используете виртуальные VPS, облачные сервера, от одного из клиентов этого сервера может идти большая нагрузка, с которой гипервизор не справляется. В результате этот клиент будет “похищать” процессорное время от других. А ваш сервер недополучит той мощности, за которую вы платите. 

71580152_2031646956936249_1434144873543368704_o.jpg
Инструменты для тестирования
UnixBench. Эта простая утилита для показательных цифр сообщает последний индекс сервера: Например, “производительность сервера = 1000”.   

FIO. Одна из лучших утилит для тестирования именно дисковых подсистем — может измерить целый ряд метрик. Удобна в работе: в файле для теста чтения можно указать сразу все ключи, который вы хотите протестировать. То же самое можно сделать для записи. Тесты на чтение и запись можно объединить, запустив их в два потока в гибридном тесте.
Оценить производительность дисковой подсистемы, помогут метрики iops, latency, clat (complete latency).
На сайтах облачных провайдеров (например, Google Cloud, AlibabaCloud, hoster.by) есть мануалы по корректному использованию FIO на их серверах. Обязательно учитывайте рекомендации провайдеров, чтобы не потерять свои данные!   

Sysbench. Это утилита для нагрузочного тестирования MySQL-серверов, основанная на проекте LuaJIT. Она также может тестировать серверные подсистемы: диск, процессор, память. По сути это универсальный BenchMark для проверки как серверной инфраструктуры, так и приложения.
Для Sysbench можно написать собственные сценарии тестирования на языке Lua.   

Phoronix. Содержит более 220 различных тестов. Очень полезная функциональность: во время тестирования Test Suite самостоятельно контролирует состояние оборудования (температуру CPU, скорость вращения кулеров), защищая систему от перегрева. Для тестирования диска нужно минимум 30 Гб свободного места.   

VDbench. Это инструмент для генерации I/O-нагрузки на дисковые системы, разработанные Oracle. Оценивает производительность и целостность СХД. Для корректной работы на сервере должна быть установлена Java.   

IOzone. Не самый мощный инструмент, но может оформлять результаты тестирования в 3D-график, выдавать их текстом или Excel-таблицей. IOzone доступен как тестовый профайл в Phoronix Test Suite. 

Выводы

  • Выбирая утилиту для тестирования, нужно отталкиваться от задачи.
  • При тестировании нужно правильно моделировать нагрузку.
  • За системой во время тестирования нужно следить, чтобы “железо” не вышло из строя.