Нагрузочные испытания и бенчмаркинг с 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 для большинства наших веб-сервисов.