Я пытаюсь выполнить стресс-тест конкретного сценария PHP, который заставляет загружать очень большой файл, но особенно когда клиенты с медленным подключением делают запрос. Я также хочу одновременно проверить, как остальная часть сайта работает при такой нагрузке. У меня есть FiOS, поэтому выполнение нескольких десятков одновременных подключений на самом деле не приводит к очень долгой нагрузке на сервер (нас не волнует объем, поскольку мы не ожидаем большого количества одновременных подключений для этого файла, на самом деле всего несколько десятков медленные), и я хочу протестировать его, как если бы у меня было медленное соединение, скажем, 100 кб / сек. Есть ли способ ограничить скорость подключения ApacheBenchmark к сайту? Или есть другой способ временно ограничить мое подключение к этому сайту? Я использую Mac OS X локально, а сервер - это Windows, на которой запущен Apache.
Одна из возможностей - использовать набор функций IPFW OS X. IPFW - это программный брандмауэр OS X, который также поддерживает формирование трафика. Вот как его настроить (при условии, что в качестве IP-адреса веб-сервера используется 1.2.3.4):
sudo ipfw pipe 1 config bw 15Kbyte/s
sudo ipfw add 1 pipe 1 ip from 1.2.3.4 to any
sudo 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. Ванем хороший бесплатный. нс-2 это бесплатный симулятор, который отличается и, вероятно, более сложен, чем то, что вы хотите, вы создаете фальшивую сеть, и она моделирует это.
Или dummynet, но я добавлю это к хорошему ответу Урголла.