2010-08-21 20 views
157

Sé que esta es una pregunta extraña. Dado que suelo desarrollar aplicaciones basadas en la "suposición" de que todos los usuarios tienen una conexión a Internet lenta. Pero, ¿alguien piensa que hay una manera de simular mediante programación una conexión a Internet lenta, para que pueda "ver" cómo funciona una aplicación bajo varias "velocidades de conexión"?Simulación de conexión a Internet lenta

No me preocupa qué idioma se utiliza. Y no estoy buscando muestras de código ni nada, solo estoy interesado en la lógica detrás de esto.

Respuesta

100

Si está ejecutando Windows, fiddler es una gran herramienta. Tiene una configuración para simular la velocidad del módem, y para alguien que quiere más control tiene un plugin to add latency to each request.

Prefiero usar una herramienta como esta para poner código de latencia en mi aplicación, ya que es una simulación mucho más realista, además de no hacerme diseñar o codificar los bits reales. El mejor código es el código que no tengo que escribir.

AÑADIDO: Este artículo en el blog de Pavel Donchev sobre Tecnologías de software muestra cómo crear velocidades personalizadas simuladas: Limiting your Internet connection speed with Fiddler.

+6

Hola, escribí una pequeña guía para simular una conexión lenta a Internet que podría ser útil: http://www.developertipoftheday.com/2010/12/simulate-slow-internet-connection-in.html - divulgación completa - este es mi propio blog, pero en caso de que sirva para difundir la buena palabra de fiddler :-) –

+0

El problema con este enfoque de violín es que la simulación de latencia no es precisa, funciona en el nivel de protocolo incorrecto por lo que no puede simular correctamente el inicio lento. –

+0

@SamSaffron, Perdón por desenterrar una publicación anterior como esta, pero, ¿conoces alguna otra herramienta que ayude en la simulación de inicios lentos? –

4

Usted puede intentar Dummynet, puede simula la cola de ancho de banda y limitaciones, retrasos, pérdidas de paquetes, y los efectos de trayectoria múltiple

6

Hay proxies TCP por ahí, como iprelay y descuidado, que hacen ancho de banda conformación para simular conexiones lentas. También puede configurar el ancho de banda y simular la pérdida de paquetes utilizando herramientas de filtrado de IP como ipfw e iptables.

+0

Gracias, echaré un vistazo a iprelay y Sloppy Joe. –

+0

Gracias, ipfw funciona muy bien. Aquí hay una guía rápida que vi que fue útil: http://barkingiguana.com/2009/12/04/simulating-slow-or-laggy-network-connections-in-os-x/ –

3

Utilice un proxy de depuración web con funciones de aceleración, como Charles o Fiddler.

En general, les resultará útil el desarrollo web. La principal diferencia es que Charles es shareware, mientras que Fiddler es gratis.

+0

¿Funciona eso dentro del navegador? ? – Frodo

+0

Lo ejecuta como un proxy. El navegador se conecta automáticamente y reenvía las solicitudes a su aplicación web. –

+0

Para Fiddler, tiene ambos modos para trabajar dentro/fuera del navegador. –

9

Estaba usando http://www.netlimiter.com/ y funciona muy bien. No solo limita la velocidad para procesos individuales sino que también muestra las tasas de transferencia reales.

2

Utilice una herramienta como TCPMon. Puede simular una conexión lenta.

Básicamente, usted solicita exactamente lo mismo y simplemente reenvía la misma solicitud al servidor real, y luego retrasa la respuesta con solo la cantidad establecida de bytes.

4

Además, para simular una conexión lenta en algunos * nix, puede intentar usar ipfw. Más información es proporcionada por la respuesta de Ben Newman en este Quora question

0

También hay otra herramienta llamada WIPFW - http://wipfw.sourceforge.net/

Es un poco vieja escuela, pero se puede utilizar para simular una conexión más lenta. Está basado en Windows, y la herramienta permite al administrador controlar cuánto tráfico está recibiendo el enrutador de una máquina determinada, o cuánto tráfico de red está reenviando, por ejemplo.

36
+1

Network Link Conditioner es mantenido por Apple (por lo que es estable y confiable), PERO solo se aplica al simulador de Xcode. –

+2

@BenWheeler Probé recientemente, seguramente se aplicó en todo el sistema, incluso localhost – aromero

+2

Puedo confirmar que Network Link Conditioner efectivamente se aplica a toda la pila de red. –

141

A partir de Chrome 38 se puede hacer esto sin ningún tipo de plugins. Basta con hacer clic inspeccionar elemento (o F12 tecla de acceso directo), a continuación, haga clic en "dispositivo de palanca mod" enter image description here y verá algo como esto:

enter image description here

Entre muchas otras características que le permite simular la conexión de Internet específico (3G, GPRS)

PS para las personas que intentan limitar la velocidad de carga. Tristemente en este momento no es posible.

P.S.2 ahora no necesita alternar nada. El panel de estrangulamiento está disponible directamente desde el panel de red. enter image description here

Tenga en cuenta que al hacer clic en Sin estrangulación puede crear sus opciones de aceleración personalizadas.

enter image description here

+2

Ahora la aceleración de herramientas de desarrollo de Chrome limita tanto la velocidad de descarga como de carga. Pero solo lo limita a la página actual en Chrome, por lo que no puede usarlo para probar su página en otros navegadores. Para hacer eso necesitas usar otras herramientas como Fiddler. –

+1

Vale la pena mencionar que actualmente los WebSockets no se aceleran de esta manera: https://bugs.chromium.org/p/chromium/issues/detail?id=423246 – mseddon

6

en máquinas Linux u puede utilizar wondershaper

apt-get install wondershaper 

$ sudo wondershaper {interface} {down} {up} 

la {abajo} y {a} son el ancho de banda en kbps

Así por ejemplo, si desea limitar el ancho de banda interfaz eth1 a 256 kbps enlace ascendente y 128 kbps enlace descendente,

$ sudo wondershaper eth1 256 128 

Para borrar el límite,

$ sudo wondershaper clear eth1 
+0

Gracias - ¡esto funciona genial! – Karussell

+0

BTW: descubra los nombres de la red a través de: 'ifconfig -a' – Karussell

1

Mac OS X desde 10.10 tiene una aplicación llamada Murus Firewall, que actúa como una interfaz gráfica de usuario a PF, el sustituto de ipfw.

Funciona muy bien para la regulación de todo el sistema o el dominio específico. Solo pude usarlo para deslizar mi velocidad de descarga entre 300 Kbps y 30 Mbps para probar cómo se ajusta un reproductor de video en tiempo real.

0

Puede usar NetEm (Network Emulation) como servidor proxy para emular muchas características de red (velocidad, retraso, pérdida de paquetes, etc.). Controla la red usando el paquete iproute2 y está habilitado en el kernel de la mayoría de las distribuciones de Linux.

Es controlado por la aplicación tc de línea de comandos (del paquete iproute2), pero también hay algunos GUIs interfaz web para NetEm, por ejemplo PHPnetemGUI2.

La ventaja es que, como escribí, puede emular no solo diferentes velocidades de red sino también, por ejemplo, la pérdida de paquetes, la duplicación y la corrupción, la demora aleatoria o definida, etc., por lo que puede emular varios redes de bajo rendimiento.

Para su aplicación es absolutamente transparente, puede configurar el sistema operativo para usar el servidor proxy de NetEm, por lo que todas las conexiones desde esa máquina pasarán por NetEm. O puede configurar solo su aplicación para usarla como proxy.

Lo he estado usando para probar el rendimiento de una aplicación de Android en varias redes emuladas de bajo rendimiento.

Cuestiones relacionadas