У нас есть производственный сервер с Apache, который иногда дает сбой из-за слишком большой нагрузки. Я пытаюсь воспроизвести ситуацию на тестовом сервере, чтобы протестировать Monit. Итак, моя цель здесь - перегрузить Apache, чтобы вызвать сбой службы или, по крайней мере, сделать веб-сайт недоступным.
Я пытался сделать это с помощью apache AB: ab -n 100000 -c 1000 http://webtest/
но, похоже, этого недостаточно, несмотря на то, что / server-status / показывает, что все рабочие активны ... Есть ли более мощная альтернатива или более эффективный способ использования ab поставить Апача на колени?
Спасибо!
Наиболее многообещающими из бесплатных инструментов нагрузочного тестирования с открытым исходным кодом являются:
Если вам нужно точно воспроизвести сбой в производстве, я бы порекомендовал использовать 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, чтобы получить представление обо всех доступных функциях. Удачи!
Попробуйте использовать осада с другого сервера или серверов с разумным ЦП и сетевым подключением. Интересно, что я обнаружил, что тестирование с другого сервера может вызвать большую нагрузку, чем тестирование с сервера с Apache, даже несмотря на то, что было много свободного ЦП. Это с моим основным сервером, экземпляром t2.micro в AWS, с большим количеством кредитов ЦП.
Убедитесь, что вы установили benchmark = false в файле конфигурации siege (прочтите документацию). Задержка между серверами является ключевым фактором, поэтому лучше всего использовать один центр обработки данных. Я использовал спотовый инстанс AWS m3.medium со скоростью около 1 цента в час.
Мне нравится использовать Xceptance XLT для нагрузочного тестирования.