Есть ли способ ограничить скорость соединения apachebench с сервером?

Я пытаюсь провести стресс-тестирование конкретного PHP-скрипта, который вынуждает загружать очень большой файл, но особенно когда клиенты с медленными соединениями делают запрос. Я также хочу одновременно протестировать, как остальная часть сайта работает под такой нагрузкой. У меня есть FiOS, так что выполнение нескольких десятков одновременных подключений на самом деле не слишком долго нагружает сервер (нас не волнует объем, так как мы не ожидаем много одновременных подключений для этого файла, всего несколько десятков действительно медленные), и я хочу проверить это, как будто я на медленном соединении, скажем, 100kb/sec. Есть ли способ ограничить скорость подключения ApacheBenchmark к сайту? Или есть другой способ временно ограничить мою связь с этим сайтом? Я использую Mac OS X локально, а сервер - это Windows-бокс под управлением Apache.

2 ответа

Решение

Одной из возможностей может быть использование набора функций IPFW в OS X. IPFW - это программный брандмауэр OS X, который также поддерживает формирование трафика. Вот как это настроить (при условии 1.2.3.4 в качестве IP-адреса веб-сервера):

  1. Откройте приложение Terminal, чтобы получить командную строку.
  2. Создать виртуальное сетевое устройство
    sudo ipfw pipe 1 config bw 15Kbyte/s
  3. Создайте два правила, которые будут перенаправлять трафик на / с веб-сервера через виртуальное устройство:
    sudo ipfw add 1 pipe 1 ip from 1.2.3.4 to anysudo ipfw add 2 pipe 1 ip from any to 1.2.3.4

Теперь весь трафик между вашим компьютером OS X и веб-сервером будет ограничен 15 КБ / с (при необходимости измените это значение).

Чтобы удалить конфигурацию, чтобы вернуться к неограниченной пропускной способности:
sudo ipfw delete 1
sudo ipfw delete 2
ipfw pipe delete 1

Предостережение:
1. Я не уверен, что однажды заданная конфигурация сохранится после перезагрузки.
2. Предполагается, что ваш программный брандмауэр еще не настроен; если это так, то правила 1 и 2 могут уже существовать, и команды здесь могут вызвать ошибки.

Надеюсь это поможет.

Я рад, что ты это делаешь; многие люди не понимают, что их приложения будут вести себя принципиально иначе, как только они выйдут из лаборатории в "настоящий Интернет".

Основная категория того, что вы ищете, это эмулятор WAN. Они продают аппаратные устройства (и программное обеспечение), которые делают это от $2 тыс. И выше, если вы хотите делать это много, и не только изменять пропускную способность, но и задержку, джиттер и другие факторы. Shunra и Linktropy - два хороших поставщика.

Но есть много программных решений. Большинство из них работают на Linux, но я думаю, что некоторые из них могут работать на OSX. Wanem хороший бесплатный. ns-2 - бесплатный симулятор, который отличается и, вероятно, более сложен, чем вы хотите, вы создаете поддельную сеть, и она имитирует это.

Или dummynet, но я добавлю это к хорошему ответу Урголла.

Другие вопросы по тегам