Я знаю, что это довольно странный вопрос. Поскольку я обычно разрабатываю приложения, основываясь на «предположении», что у всех пользователей медленное интернет-соединение. Но кто-нибудь думает, что есть способ программно симулировать медленное интернет-соединение, чтобы я мог «увидеть», как приложение работает при различных «скоростях соединения»?
Я не беспокоюсь о том, какой язык используется. И я не ищу примеры кода или что-то еще, просто интересуюсь логикой этого.
Начиная с Chrome 38 вы можете делать это без каких-либо плагинов. Просто нажмите «Проверить элемент» (или « F12горячую клавишу»), затем нажмите «Переключить мод устройства», и вы увидите что-то вроде этого:
Среди многих других функций он позволяет моделировать конкретное интернет-соединение (3G, GPRS).
PS для людей, которые пытаются ограничить скорость загрузки. К сожалению, в настоящее время это невозможно.
PS2 теперь вам не нужно ничего переключать. Панель дросселирования доступна прямо с сетевой панели.
Обратите внимание, что, нажимая на Нет регулирования, вы можете создать свои собственные параметры регулирования.
источник
Google рекомендует :
источник
На машинах Linux вы можете использовать
wondershaper
{down} и {up} - пропускная способность в кбит / с
Например, если вы хотите ограничить пропускную способность интерфейса eth1 до восходящей линии связи 256 кбит / с и нисходящей линии связи 128 кбит / с,
Чтобы очистить предел,
источник
Я использовал http://www.netlimiter.com/, и он работает очень хорошо. Не только ограничить скорость для отдельных процессов, но также показывает фактические скорости передачи.
источник
Существуют прокси-серверы TCP, такие как iprelay и Sloppy, которые формируют полосу пропускания для имитации медленных соединений. Вы также можете формировать полосу пропускания и моделировать потерю пакетов, используя инструменты IP-фильтрации, такие как ipfw и iptables.
источник
Вы можете попробовать Dummynet , он может имитировать ограничения очереди и пропускной способности, задержки, потери пакетов и эффекты многолучевого распространения.
источник
Используйте прокси-сервер для отладки с функциями регулирования, такими как Charles или Fiddler .
Вы найдете их полезными для веб-разработки в целом. Основным отличием является то, что Чарльз является условно-бесплатным программным обеспечением, а Fiddler - бесплатным.
источник
Также, для симуляции медленного соединения на некоторых * nixes, вы можете попробовать использовать ipfw . Более подробная информация предоставлена ответом Бена Ньюмана на этот вопрос Quora.
источник
Используйте такой инструмент, как TCPMon . Это может подделать медленное соединение.
По сути, вы запрашиваете точно такую же вещь, и он просто перенаправляет точно такой же запрос на реальный сервер, а затем задерживает ответ только с установленным количеством байтов.
источник
Вы можете использовать NetEm (эмуляция сети) в качестве прокси-сервера для эмуляции многих характеристик сети (скорость, задержка, потеря пакетов и т. Д.). Он управляет сетью с помощью пакета iproute2 и включен в ядро большинства дистрибутивов Linux.
Он управляется
tc
приложением командной строки (из пакета iproute2 ), но есть также некоторые веб-интерфейсы для NetEm, например PHPnetemGUI2 .Преимущество состоит в том, что, как я писал, он может эмулировать не только различные скорости сети, но также, например, потерю пакетов, дублирование и / или повреждение, случайную или заданную задержку и т. Д., Так что вы можете эмулировать различные плохо работающие сети.
Для вашего приложения это абсолютно прозрачно, вы можете настроить операционную систему на использование прокси-сервера NetEm, чтобы все соединения с этого компьютера проходили через NetEm. Или вы можете настроить только свое приложение, чтобы использовать его в качестве прокси.
Я использовал его для тестирования производительности приложения Android в различных эмулированных сетях с низкой производительностью.
источник
Mac OSX с 10.10 имеет приложение под названием Murus Firewall , которое действует как графический интерфейс для pf, заменяющего ipfw.
Он очень хорошо работает для регулирования всей системы или домена. Я просто смог использовать его, чтобы снизить скорость загрузки между 300 Кбит / с и 30 Мбит / с, чтобы проверить, как настраивается потоковый видеоплеер.
источник
Существует также еще один инструмент под названием WIPFW - http://wipfw.sourceforge.net/
Это немного старая школа, но вы можете использовать ее для симуляции медленного соединения. Он основан на Windows, и этот инструмент позволяет администратору отслеживать, сколько трафика маршрутизатор получает с определенного компьютера или, например, объем трафика WWW, который он перенаправляет.
источник
Обновление этого (9 лет после того, как его спросили) как ответ, который я искал, не было упомянуто:
Firefox также имеет предустановки для регулирования скорости соединения. Найти их в сетевом мониторе вкладке « » инструментов разработчика. По умолчанию «Нет регулирования».
Самая низкая скорость - GPRS ( скорость загрузки: 50 Кбит / с, скорость загрузки: 20 Кбит / с, минимальная задержка (мс): 500 ), от «хорошего» и «обычного» 2G, 3G и 4G до DSL и WiFi ( скорость загрузки: 30 Мбит / с, загрузка скорость: 15 Мбит / с, минимальная задержка (мс): 2 ).
Больше в документации по Dev Tools .
источник
Для Linux может быть полезен следующий список статей:
Лично, хотя Dummynet хорош, я считаю NetEm наиболее универсальным для моих сценариев использования; Меня обычно интересует эффект задержек, а не пропускная способность (то есть проблемы с WiFi-соединением), и очень легко эмулировать случайную потерю / повреждение пакетов и т. Д. Он также очень доступен и бесплатен (в отличие от аппаратного Linktropy). ).
С другой стороны, для Windows Clumsy потрясающий. Я также хотел бы добавить, что регулирование браузера (в отношении веб-сайтов) не является точным методом для эмуляции реальных сетевых проблем (я думаю, что «TKK» прокомментировал несколько причин, приведенных выше).
Надеюсь, это поможет кому-то!
источник
Один общий случай формирования одного TCP-соединения может быть фактически собран из двух пар
socat
иcpipe
в UNIX-моде, например так:socat TCP-LISTEN:5555,reuseaddr,reuseport,fork SYSTEM:'cpipe -ngr -b 1 -s 10 | socat - "TCP:localhost:5000" | cpipe -ngr -b 1 -s 300'
Это моделирует соединение с пропускной способностью около 300Кб / с от вашей службы в
:5000
и до приблизительно 10 килобайт / с и прослушивает:5555
входящие соединения. Предупреждение : обратите внимание, что это для каждого соединения , поэтому каждое отдельное TCP-соединение получает эту сумму.Объяснение: Внешний (слева)
socat
прослушивает с заданными параметрами:5555
в качестве разветвляющегося сервера. Затем перваяcpipe
команда вSYSTEM:...
параметре регулирует данные, которые поступают в сокет: 5555 (и выходит из первого, внешнегоsocat
) до максимум 10 КБ / с. Затем эти данные пересылаются с помощью другого,socat
который подключаетсяlocalhost:5000
(где служба, которую вы хотите замедлить, должна прослушивать). Данные изlocalhost:5000
затем помещаются в правильнуюcpipe
команду, которая (с заданными значениями) дросселирует ее до 300 кБ / с.Опция
-ngr
дляcpipe
очень важна. Это заставляет cpipe читать жадно из своего входного файла-дескриптора. В противном случае вы можете застрять в буферах данных, которые не будут перенаправлены и ожидают ответа.Использование более распространенного
buffer
инструмента вместоcpipe
вероятного также возможно.(Авторы: это основано на рецепте "двойного тройника" Кристофа Лора из
socat
документации)источник