Это подборка утилит, составленная по рекомендациям резидентов Hacker News и GitHub. В список вошли: Locust, Vegeta, Slow_cooker, k6 и Siege. Их используют инженеры из DICE, EA и Buoyant, а также разработчики Kubernetes и Load Impact. Давайте поговорим об этих инструментах.
Фото - Виктор Фрейтас — Unsplash
Саранча.
io
Инструмент для нагрузочного тестирования сайта.
Все скрипты написаны на Python. Специальный веб-интерфейс, построенный на Колба , позволяет отслеживать результаты в режиме реального времени.
Авторами Locust являются швейцарские инженеры, в том числе сотрудники DICE и EA, которые разрабатывают и издают компьютерные игры.
В основе инструмента лежит интересная концепция: Locust («саранча») имитирует поведение целого роя насекомых (виртуальных пользователей), «атакующих» сайт во время теста.
Запросы формируются с помощью сетевой библиотеки для организации параллельных вычислений — событие .
Вот пример простого теста, который приведен на официальном сайте проекта:
Locust использует библиотеку запросов.from locust import HttpLocust, TaskSet, task class WebsiteTasks(TaskSet): def on_start(self): self.client.post("/login", { "username": "test_user", "password": "" }) @task def index(self): self.client.get("/") @task def about(self): self.client.get("/about/") class WebsiteUser(HttpLocust): task_set = WebsiteTasks min_wait = 5000 max_wait = 15000
Это дополнение к стандартным инструментам Python упрощает работу с HTTP и SSL и делает код более наглядным.
Кстати, документация запросы можно использовать как шпаргалку для отладки тестов Locust. Этот инструмент нагрузочного тестирования существует уже более семи лет. За это время вокруг него сформировалось обширное сообщество — на GitHub. более 10 тысяч звезд .
Locust использовался для оценки производительности сети Battlelog для серии игр Battlefield. Положительное мнение об инструменте ответил Армин Роначер, автор фреймворка Flask. Среди недостатков Locust выделять Достаточно низкая производительность и периодические ошибки при оценке времени ответа сайта.
Также инструмент не умеет строить графики, но проблема решается загрузкой результатов в виде CSV-файл -файлы и рисование графиков в табличном редакторе.
Если вы хотите лучше узнать Locust, вам следует обратить внимание на документация инструмент. Также можно рекомендовать производительность Алексей Романов из Wargaming на Python Meetup. Он рассказывает о том, как писать сценарии, имитирующие поведение пользователя.
Вегета
Утилита командной строки для тестирования HTTP-сервисов, написанная на Go. Его можно подключить как библиотеку для создания собственных инструментов нагрузочного тестирования.Vegeta разработана одним из авторов открытой платформы.
Исходный график — это система проверки исходного кода и навигации, используемая Lyft, Uber и Yelp. Vegeta оценивает возможности сетевых ресурсов, «бомбардируя» их запросами с заданной частотой.
Например, чтобы проверить localhost, просто введите следующую команду: echo "GET http://localhost/ " | vegeta attack -duration=5s | tee results.bin | vegeta report
По умолчанию Vegeta работает со стандартным потоком чтения команд (stdin), поэтому ресурс для тестирования передается через echo. Параметр продолжительности указывает продолжительность теста.
Отчет будет создан в файле results.bin. Vegeta генерирует отчеты в текстовом формате, но в то же время может рисовать графики .
Вы можете сгенерировать их с помощью следующей команды: vegeta plot -title=Results results.bin > results-plot.html
Вокруг Вегеты образовалось большое сообщество - 12 тысяч звезд на GitHub .
Инструмент даже использовал Разработчики Kubernetes оценили производительность своей платформы — тогда Vegeta генерировала около 10 миллионов запросов в секунду к кластеру из тысячи узлов.
Имеется документация с описанием всех функций и флагов для тестов Vegeta. в репозитории GitHub .
Там же.
может быть найден предварительно скомпилированные исполняемые файлы.
Мультиварка
Это инструмент нагрузочного тестирования сервера, написанный на Go. Его разработали инженеры компании Buoyant, создающей сервисную сеть для Kubernetes — Linkerd. Он является частью Cloud Native Computing Foundation и имеет значение конкурент Гугл Истио .
Фото - Джошуа Арагон — Unsplash
Обычно утилиты нагрузочного тестирования проверяют возможности сервера, отправляя ему как можно больше запросов за короткое время.
Авторы Slow_cooker говорят, что их инструмент позволяет оценить производительность оборудования при предсказуемой нагрузке в течение длительного периода времени.
Специалисты Buoyant используют свою разработку для тестирования Linkerd и других сервисов, например nginx. Инструмент достаточно молодой — ему около трёх лет — поэтому ещё не обзавелся большим сообществом.
Но в будущем ситуация может измениться, например, его репозиторий уже раздвоенный в Skyscanner — международном сервисе поиска авиабилетов.
Вы можете найти исходный код на GitHub .
к6
Инструмент для нагрузочного и регрессионного тестирования микросервисов, контейнеров и сайтов, размещенных в облаке.Он написан на Go и JavaScript разработчиками из Load Impact — приложения для тестирования «устойчивости» сайтов.
Работа с k6 основана на модели «все как код», когда логика тестирования и все настройки написаны на JavaScript. В скриптах отдельные шаги можно объединять в группы, что может быть удобно для тех, кто привык следовать принципам BDD. Вот пример такой группы: import { group } from "k6";
export default function() {
group("user flow: returning user", function() {
group("visit homepage", function() {
// load homepage resources
});
group("login", function() {
// perform login
});
});
};
Инструмент также позволяет записывать сценарии И строить графики — последняя функция реализована на InfluxDB и Grafana. И он интегрируется с такими системами CI, как Jenkins, Circle CI, Team City и GitLab.
Пользователи говорят К6 не требовательный к ресурсам и имеет удобный API. Но есть и ряд недостатков, в частности к6 не поддерживаю вебсокет и не могу проводить тесты на распределенных системах.
Хотя разработчики к6 есть в тематической ветке на Hacker News сказал что эти функции появятся в будущем.
Если вы хотите самостоятельно ознакомиться с возможностями к6, жители HN рекомендуют начать с техническая документация — подробно и с примерами.
Если у вас есть какие-либо вопросы, вы можете связаться на официальный форум .
Осада
Siege позволяет загружать тестовые веб-серверы.Утилита была создана инженером Джеффом Фулмером, чтобы разработчики могли проверить ресурсоемкость своего кода в условиях, приближенных к боевым.
Siege эмулирует непрерывный поток запросов к сайту от множества пользователей, как бы удерживая сервер «в осаде» — отсюда и название инструмента.
После теста утилита показывает: время проверки, количество транзакций в секунду, пропускную способность, количество успешных и неуспешных запросов, а также их количество с кодом ответа 200. Здесь пример отчет, созданный Siege. Siege получил довольно широкое распространение в ИТ-сообществе.
Например, целый раздел в книге « Высокая производительность Nginx «Также его использовать некоторые облачные провайдеры.
К недостаткам Siege можно отнести нестандартный синтаксис и неочевидные методы расчета параметров тестирования — например, редиректы.
которые считаются успешных транзакций, поэтому их количество может превышать общее количество запросов.
Если вы хотите попробовать Siege самостоятельно, посмотрите онлайн-руководство — там обсуждаются некоторые «странности» системы.
Дополнительное чтение в блоге 1cloud.ru:
Что нового в ядре Linux 5.3 — графические драйверы, виртуализация и другие обновления
Почему разработчики основных браузеров снова отказались от отображения поддоменов
Почему Apple изменила требования к разработчикам приложений
Теги: #linux #Разработка мобильных приложений #Администрирование серверов #Разработка веб-сайтов #Тестирование веб-сервисов #нагрузочное тестирование #бенчмаркинг #1cloud #выбор инструментов
-
Вернер, Альфред
19 Oct, 24 -
Ростелеком И Личная Охрана. Данные
19 Oct, 24 -
Панель Управления Google
19 Oct, 24 -
Гугл || Элгуг
19 Oct, 24 -
Парадокс Дня Рождения
19 Oct, 24 -
Вопросы О Заработке В Интернете.
19 Oct, 24