Как смоделировать DDOS / Slashdotting? - PullRequest
15 голосов
/ 20 марта 2011

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

Как я могу имитировать десятки / сотни посещений завторой в моем блоге и проверить его производительность?Я размещаю свой блог с учетной записью SSH на общем сервере.

Ответы [ 5 ]

15 голосов
/ 20 марта 2011

Вы можете отправить много запросов на ваш сервер, используя такие инструменты, как:


Первый, ab, позволит вам отправлять множество запросов только на один URL-адрес - это здорово для сравненияодин скрипт / страница;но не отражает реальную картину пользователя, просматривающего ваш сайт (например, CSS / JS / изображения не загружаются) .

Второй вариант, осада, позволитотправлять запросы на список URL-адресов, указанный в текстовом файле - правильно составив этот список URL-адресов (для этого есть прокси-сервер) даст вам неплохие тесты.

И третий, JMeter, позволит вам создавать более сложные сценарии.
Этот более сложный, и вам понадобится немного времени, чтобы его использовать - но, вероятно, это даст вам лучшие результаты.

3 голосов
/ 10 марта 2018

HTTP (S) инструменты для тестирования, тестирование / отладка и restAPI (RESTful)

Расположен в алфавитном порядке (не предпочитает)

Инструменты тестирования HTTP (S)

  • ab - медленный и однопоточный, записанный в C
  • apib - большинство функций ApacheBench (ab), также разработанных как более современная замена , написано в C
  • baloo - Выразительное сквозное тестирование HTTP API стало проще, написано на Go (golang)
  • эстафета - нагрузочное тестирование HTTP, написано на Go (golang)
  • bombardier - быстрый кроссплатформенный инструмент для сравнительного анализа HTTP, написанный на Go (golang)
  • curl-loader - загрузка производительности различных сервисов приложений и генерация трафика, записанная в C
  • fasthttploader - бенчмарк (своего рода ab) с автоматической настройкой и графиками на основе библиотеки fasthttp, запись в Go (golang)
  • fortio - загрузка библиотеки тестирования, инструмента командной строки и веб-интерфейса. Позволяет задавать заданную загрузку запроса в секунду и записывать гистограммы задержки и другую полезную статистику, записывать в Go (golang)
  • gatling - Высокопроизводительный фреймворк для нагрузочного тестирования, основанный на Scala, Akka и Netty, записать в Scala
  • go-wrk - инструмент для тестирования производительности HTTP, основанный на духе превосходного инструмента wrk (wg/wrk), пишите на Go (golang) )
  • goad - Goad - это высокопроизводительный инструмент AWS Lambda с высокой степенью распределения и нагрузочного тестирования, пишите на Go (golang)
  • gobench - инструмент для тестирования и тестирования производительности HTTP / HTTPS, запись в Go (golang)
  • gohttpbench - ab инструмент, похожий на эталонный тест, запускаемый на многоядерном процессоре, запись в 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
  • саранча - простой в использовании инструмент для тестирования распределенной нагрузки с веб-интерфейсом в реальном времени. Имитирует рой одновременных пользователей, поведение каждого из них определяется вашим кодом Python. Написано в Python
  • mgun - современный инструмент для нагрузочного тестирования HTTP-серверов, написанный на Go (golang)
  • pounce - ровно, но результаты колеблются, иногда быстрее, чем htstress, записано в C
  • осада - медленная и однопоточная, записана в C
  • slapper - Простой инструмент для нагрузочного тестирования с обновляемой в реальном времени гистограммой времени запроса, написанный на Go (golang)
  • slow_cooker - тестер нагрузки, ориентированный на проблемы жизненного цикла и длительные тесты, сервис с предсказуемой нагрузкой и уровнем параллелизма в течение длительного периода времени, написанный на Go (golang)
  • снайпер - мощный и высокопроизводительный http-тестер нагрузки, написанный на Go (golang)
  • Цунг - Имитация стресс-пользователей для проверки масштабируемости и производительности клиент-серверных приложений на базе IP HTTP, WebDAV, SOAP, PostgreSQL , MySQL, LDAP и Jabber / XMPP серверы, записанные в Erlang
  • Вегета - Тест загрузки HTTPИнструмент и библиотека ng, написанные на Go (golang)
  • weighttp - многопоточные, но медленнее, чем httress без keepalive, написанные на C
  • wrk - многопоточный ~~, но не предлагает одновременных подключений и переключатель поддержки активности ~~, записанный в C / Lua
  • wrk2 - постоянная пропускная способность, вариант записи с корректной задержкой wrk, записанный в C / Lua

    Concurrent connections are enabled with:
      -c, --connections <N>  Connections to keep open
    And keepalive (which is default) can be disabled using:
      -H "Connection: close"
    
  • yandex-tank - инструмент для измерения нагрузки и производительности, написанный на Python / C|C++|Asm ( фантом )

Инструментарий для тестирования/ отладка HTTP (S) и restAPI (RESTful)

  • bat - Go реализует CLI, похожий на cURL инструмент для людей, написанный на Go (*)1266 *)
  • curl - Мощный инструмент командной строки для передачи данных, указанных с помощью синтаксиса URL, записанный в C
  • curlconverter - преобразовать команды curl в python, javascript, php
  • httpie - клиент, удобная замена скручивания с интуитивно понятным пользовательским интерфейсом, поддержкой JSON, подсветкой синтаксиса, wget-подобными загрузками, расширениями, написанными на Python
  • jq - это легкий и гибкий процессор JSON для командной строки, написанный на C

SaaS / PaaS

  • BlazeMeter - предлагает интегрированную среду автоматизации тестирования для всей технической группы (разработчиков, разработчиков, специалистов по обеспечению качества) на протяжении всего жизненного цикла разработки продукта.Запустите непрерывное тестирование или тестирование по требованию для API, мобильных приложений и веб-сайтов.Запуск из облака, локально или в виде гибридного решения.Используйте с JMeter & Selenium WebDriver и интегрируйте с существующими инструментами CI, CD и APM.
  • NewRelic - набор инструментов для анализа программного обеспечения, используемый разработчиками, операционными системами и программным обеспечениемкомпании, чтобы понять, как ваши приложения работают в процессе разработки и производства
  • NGINX Amplify - Визуально выявлять узкие места в производительности, перегруженные серверы или потенциальные атаки DDoSУлучшайте и оптимизируйте производительность NGINX с помощью интеллектуальных советов и рекомендаций.Получайте уведомления, когда что-то не так с доставкой вашего приложения.Планирование емкости и производительности для веб-приложений.Следите за работающими системами NGINX 1

Ссылки

ИСТОЧНИК: https://github.com/denji/awesome-http-benchmark

2 голосов
/ 20 марта 2011

Помимо таких очевидных инструментов, как ab, вы можете взглянуть на что-то вроде tsung - генератор нагрузочных тестов на основе эрланга. Одна приятная особенность - это возможность выполнять тесты с распределенной нагрузкой (то есть разделять генерацию трафика на несколько машин).

2 голосов
/ 20 марта 2011

Я использую jmeter для нагрузочного тестирования моих веб-приложений. Это может сделать то, что вы ищете.

http://jmeter.apache.org/

0 голосов
/ 20 марта 2011

Apache Bench - это просто и понятно. Есть множество учебных пособий .

...