Моделирование медленного подключения к Интернету
Я знаю, что это довольно странный вопрос. Поскольку я обычно разрабатываю приложения на основе "предположения", что все пользователи имеют медленное подключение к Интернету. Но кто-нибудь думает, что есть способ программно имитировать медленное подключение к Интернету, поэтому я могу "видеть", как приложение работает под различными "скоростями соединения"?
Я не беспокоюсь о том, какой язык используется. И я не ищу образцы кода или что-то еще, просто интересуюсь логикой.
Ответы
Ответ 1
Если вы используете windows, fiddler - отличный инструмент. У него есть настройка для моделирования скорости модема, и для тех, кто хочет большего контроля, есть плагин чтобы добавить латентность к каждому запросу.
Я предпочитаю использовать такой инструмент, чтобы помещать код задержки в мое приложение, поскольку это гораздо более реалистичная симуляция, а также не заставляя меня создавать или кодировать фактические биты. Лучший код - это код, который мне не нужно писать.
ДОБАВЛЕНО: В этой статье в блоге Павла Дончева "Технологии программного обеспечения" показано, как создавать пользовательские моделированные скорости: Ограничение скорости вашего интернет-соединения с помощью Fiddler.
Ответ 2
Начиная с Chrome 38, вы можете сделать это без каких-либо плагинов. Просто нажмите элемент проверки (или F12 горячая клавиша), затем нажмите "Переключить режим устройства"
, и вы увидите что-то вроде этого:
![enter image description here]()
Среди многих других функций вы можете имитировать конкретное интернет-соединение (3G, GPRS)
P.S. для людей, которые пытаются ограничить скорость загрузки. К сожалению, в настоящее время это невозможно.
P.S.2 теперь вам не нужно ничего переключаться. Панель "Дросселирование" доступна прямо с сетевой панели. ![введите описание изображения здесь]()
Обратите внимание, что при нажатии кнопки Без дросселирования вы можете создавать свои настраиваемые параметры дросселирования.
![введите описание изображения здесь]()
Ответ 3
Google рекомендует:
Ответ 4
Я использовал http://www.netlimiter.com/, и он работает очень хорошо. Не только ограничивает скорость для отдельных процессов, но также показывает фактические скорости передачи.
Ответ 5
На машинах Linux вы можете использовать wondershaper
apt-get install wondershaper
$ sudo wondershaper {interface} {down} {up}
the {down} и {up} - пропускная способность в kpbs
Так, например, если вы хотите ограничить пропускную способность интерфейса eth1 до 256 кбит/с для восходящей линии связи и нисходящей линии связи 128 Кбит/с,
$ sudo wondershaper eth1 256 128
Чтобы очистить предел,
$ sudo wondershaper clear eth1
Ответ 6
Существуют прокси-серверы TCP, такие как iprelay и Sloppy, которые формируют полосу пропускания для имитации медленных соединений. Вы также можете выполнять формирование полосы пропускания и имитировать потерю пакетов с помощью IP-фильтров, таких как ipfw и iptables.
Ответ 7
Вы можете попробовать Dummynet, он может имитировать ограничения очереди и пропускной способности, задержки, потери пакетов и эффекты многолучевости
Ответ 8
Кроме того, для моделирования медленного соединения на некоторых * nixes вы можете попробовать использовать ipfw. Более подробная информация предоставлена ответом Бена Ньюмана на этот вопрос Qua .
Ответ 9
Использовать прокси-сервер отладки веб-сайта с функциями дросселирования, такими как Charles или Fiddler.
Вы найдете их полезным веб-разработкой в целом. Главное отличие заключается в том, что Чарльз является условно-бесплатной, тогда как Fiddler свободен.
Ответ 10
Используйте инструмент, например TCPMon. Это может привести к медленному подключению.
В принципе, вы запрашиваете его точно так же, и он просто перенаправляет то же самое требование на реальный сервер, а затем задерживает ответ только с установленным количеством байтов.
Ответ 11
Вы можете использовать NetEm (сетевая эмуляция) в качестве прокси-сервера для эмуляции многих характеристик сети (скорость, задержки, потери пакетов и т.д.). Он управляет сетью, используя iproute2, и он включен в ядре большинства дистрибутивов Linux.
Он управляется приложением командной строки tc
(из пакета iproute2), но для NetEm также есть некоторые графические интерфейсы веб-интерфейса, например PHPnetemGUI2.
Преимущество заключается в том, что, как я уже писал, он может эмулировать не только разные скорости сети, но также, например, потерю пакетов, дублирование и/или повреждение, случайную или определенную задержку и т.д., чтобы вы могли эмулировать различные плохо выполняющих сети.
Для вашего приложения это абсолютно прозрачно, вы можете настроить операционную систему на использование прокси-сервера NetEm, поэтому все соединения с этого устройства будут проходить через NetEm. Или вы можете настроить только ваше приложение, чтобы использовать его в качестве прокси.
Я использую его для тестирования производительности приложения для Android в различных эмулируемых сетях с низкой производительностью.
Ответ 12
Mac OSX с 10.10 имеет приложение под названием Murus Firewall, которое действует как графический интерфейс для pf, заменяет ipfw.
Он отлично работает для системного или доменного регулирования. Я просто смог использовать его, чтобы снизить скорость загрузки от 300 Кбит/с до 30 Мбит/с, чтобы проверить, как настраивается потоковый видеоплеер.
Ответ 13
Существует также еще один инструмент под названием WIPFW - http://wipfw.sourceforge.net/
Это немного старая школа, но вы можете использовать ее для имитации более медленного соединения. Это основано на Windows, и этот инструмент позволяет администратору отслеживать, сколько трафика получает маршрутизатор с определенной машины, или, например, трафик WWW.
Ответ 14
Обновление этого (9 лет после того, как его спросили) как ответ, который я искал, не было упомянуто:
Firefox также имеет предустановки для регулирования скорости соединения. Найдите их на вкладке Network Monitor инструментов разработчика. По умолчанию "Нет регулирования".
Самый медленный - GPRS (скорость загрузки: 50 кбит/с, скорость загрузки: 20 кбит/с, минимальная задержка (мс): 500), от "хорошего" и "обычного" 2G, 3G и 4G до DSL и WiFi (скорость загрузки: 30 Мбит/с, скорость загрузки: 15 Мбит/с, минимальная задержка (мс): 2).
Подробнее в Документах Dev Tools.