Нагрузочные испытания и бенчмаркинг с siege vs wrk

Я искал инструменты, которые могут помочь мне сделать нагрузочное тестирование и бенчмаркинг. Я нашел пары, как:https://github.com/wg/wrk , http://www.joedog.org/siege-home/ , https://github.com/rakyll/boom . Мне интересно, есть ли у кого-нибудь опыт работы с этими инструментами и есть ли отзывы о плюсах и минусах этих инструментов. Мой стресс нагрузки будет включать в себя различные тестовые случаи с помощью DELETE, PUT, GET, POST... заголовки

спасибо

3 ответов


Я использовал wrk и осаду, осада-очень простой в использовании инструмент, но я не уверен, что вы можете проверить удаление или положить с осадой.

Wrk может использовать предоставленный скрипт lua для генерации запросов, поэтому удалить и поместить не будет проблемой. И wrk-это инструмент, который может преодолеть статический файловый сервер NGINX, поэтому я думаю, что он достаточно быстр для нагрузочного тестирования общего назначения.

Я никогда не использовал boom или Яндекс.танк, предложенный @Direvius, в основном потому, что wrk достаточно прост и соответствует нашим потребностям. Но JMeter слишком сложен для меня.


инструменты нагрузочного тестирования и бенчмаркинга

перечислены в алфавитном порядке.

ab: медленный и однопоточный, написанный на C

apib: большинство функций ApacheBench (ab), также Разработанный как более современная замена, написанная на C

любовь: выразительное сквозное тестирование HTTP API легко, написано в Go (golang)

батон: Нагрузочное тестирование HTTP, написанное в Go (golang)

Бомбардье: быстрый инструмент бенчмаркинга HTTP crossplatform, написанный в Go (golang)

curl-loader: производительность загрузки различных служб приложений и генерации трафика, написанных на C

дрель: приложение http load testing вдохновлено синтаксисом Ansible, написанным на Rust

fasthttploader: benchmark (kinda ab) с autoadjustment и диаграмм на основе библиотеки fasthttp, писать в Go (golang)

fortio: библиотека нагрузочного тестирования и командная строка и web-интерфейс. Позволяет задать набор запросов в секунду загрузки и записи гистограмм задержки и другие полезные статистики, написать в Go (golang)

Гатлинга: высокопроизводительная платформа нагрузочного тестирования на основе Scala, Akka и Netty, пишите в Scala

go-wrk: HTTP инструмент бенчмаркинга на основе дух на отличном инструменте wrk (wg / wrk), пишите в Go (golang)

goad: AWS Lambda powered, highly distributed, инструмент нагрузочного тестирования, запись в Go (golang)

gobench: HTTP / HTTPS нагрузочное тестирование и инструмент бенчмаркинга, напишите в Go (golang)

gohttpbench: ab-like benchmark tool работает на многоядерном процессоре, напишите в Go (golang)

Эй: генератор нагрузки HTTP(S), ApacheBench (ab) замена, ранее известная как rakyll/boom, написанная на Go (golang)

htstress: многопоточные высоконагруженные службы bechmarking (>5K rps), написанные на C/Linux

httperf: сложная конфигурация, медленная и однопоточная, написанная на C

inundator: простая и высокопроизводительная программа http flood, написанная на C / Linux

в JMeter: Apache JMeter™, чистое приложение, предназначенное для нагрузочный тест производительности как на статических, так и на динамических ресурсах, написанных на Java

k6: современный инструмент нагрузочного тестирования в ES6 JS с поддержкой HTTP / 1.1, HTTP / 2.0 и WebSocket, написанный в Go (golang)

Саранчук: простой в использовании, распределенный инструмент тестирования нагрузки с веб-интерфейсом в реальном времени. Имитирует Рой одновременных пользователей, поведение каждого из которых определяется вашим кодом python. Написано в Питон

mgun: современный инструмент для нагрузочного тестирования HTTP серверов, написанный в Go (golang)

наброситься: evented, но результаты колеблются, это иногда быстрее, чем htstress, написано на C

осада: медленный и однопоточный, написанный на C

гулящая: простой инструмент нагрузочного тестирования с обновленной гистограммой запросов в реальном времени, написанной в Go (golang)

slow_cooker: load tester ориентирован на проблемы жизненного цикла и длительные тесты, сервис с предсказуемой нагрузкой и уровнем параллелизма в течение длительного периода времени, написанный в Go (golang)

снайпер: мощный и высокопроизводительный тестер нагрузки http, написанный в Go (golang)

цзун: сымитируйте потребителей усилия для того чтобы испытать масштабируемость и представление основанных IP применений клиента / сервера HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP и серверы Jabber/XMPP, написанные на языке Erlang

Вегета: инструмент и библиотека нагрузочного тестирования HTTP, написанные в Go (golang)

weighttp: многопоточный, но медленнее, чем htstress без keepalive, написанный на C

wrk: многопоточный, написанный на C / Lua

wrk2: постоянн объем, правильный вариант записи латентности wrk, написанный внутри C / Lua

Яндекс-танк: инструмент оценки загрузки и производительности, написанный на Python|C|C++ / Asm (phantom)

описания от здесь.


Я никогда не использовал ни один из них, но я слышал некоторые положительные мнения о wrk.

Я думаю, вы также должны попробовать в JMeter, который очень популярен, и, возможно,Яндекс.танк!--4-->, который является инструментом, который мы используем в нашем отделе LT для большинства наших веб-сервисов.