У нас есть производственный сервер, на котором запущен Apache, который иногда происходит сбой из-за слишком большой нагрузки, я пытаюсь воспроизвести ситуацию на тестовом сервере, чтобы протестировать Monit. Итак, моя цель - перегрузить Apache, чтобы вызвать сбой службы, или, по крайней мере, выполнить рендеринг сайт недоступен.
Я пытался сделать это с помощью apache AB:
ab -n 100000 -c 1000 http: // webtest /
, но, похоже, этого недостаточно, несмотря на / server -status / показывает, что все рабочие активны ... Есть ли более мощная альтернатива или более эффективный способ использовать ab , чтобы поставить Apache на колени?
Спасибо!
Наиболее многообещающими из бесплатных инструментов нагрузочного тестирования с открытым исходным кодом являются:
Если вам нужно точно воспроизвести сбой в производстве, я бы рекомендовал Apache JMeter, см. Прекратите делать предположения! Подробнее о том, как воспроизвести производственный трафик с помощью статьи JMeter .
Мне очень нравится использовать gor для нагрузочного тестирования. Этот инструмент позволяет мне регистрировать производственный трафик, а затем «воспроизводить» трафик в то время, когда я чувствую себя комфортно при тестировании. Это также позволяет воспроизводить трафик с разной скоростью. Например:
# Replay from file on 2x speed
gor --input-file "requests.gor|200%" --output-http "staging.com"
Использование рабочего трафика для тестирования, безусловно, лучший метод. Если спамить вашу домашнюю страницу 500 000 раз, вы не получите надежной статистики.
- https://github.com/buger/gor
Прочтите страницу на github, чтобы получить представление обо всех доступных функциях. Удачи!
Попробуйте использовать siege с другого сервера или серверов с разумным ЦП и сетевым подключением. Интересно, что я обнаружил, что тестирование с другого сервера может дать больше нагрузки, чем тестирование с сервера с Apache, даже несмотря на то, что было много свободного ЦП. Это с моим основным сервером экземпляр t2.micro в AWS, с большим количеством кредитов ЦП.
Убедитесь, что вы установили benchmark = false в файле конфигурации siege (прочтите документацию). Задержка между серверами является ключевым фактором, поэтому лучше всего использовать один центр обработки данных. Я использовал спотовый экземпляр AWS m3.medium со скоростью около 1 цента в час.