Назад | Перейти на главную страницу

Тяжелый стресс-тест на Apache

У нас есть производственный сервер с 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 для нагрузочного тестирования.