Тестирование нагрузки и бенчмаркинг с осадой против wrk

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

Спасибо

Ответ 1

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

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

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

Ответ 2

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

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

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

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

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

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

bombardier: быстрый кроссплатформенный инструмент для тестирования производительности HTTP, написанный на Go (golang)

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

Drill: приложение для нагрузочного тестирования HTTP, вдохновленное синтаксисом Ansible, написанным на Rust

fasthttploader: бенчмарк (своего рода ab) с автоматической настройкой и графиками на основе библиотеки fasthttp, запись в Go (golang)

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

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

go-wrk: инструмент для тестирования производительности HTTP, основанный на духе превосходного инструмента wrk (wg/wrk), пишите на Go (golang)

goad: AWS Lambda, высокораспределенный инструмент для нагрузочного тестирования, пишите на Go (golang)

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

gohttpbench: ab-like инструмент для тестирования производительности, запущенный на многоядерном процессоре, пишите на Go (golang)

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

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

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

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

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

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

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

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

pounce: выравнивается, но результаты колеблются, иногда быстрее, чем httress, написанный на C

Осада: медленная и однопоточная, написано на C

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

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

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

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

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

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

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

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

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

Описания здесь.

Ответ 3

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

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