Sé que esta es una pregunta extraña. Como generalmente desarrollo aplicaciones basadas en la "suposición" de que todos los usuarios tienen una conexión lenta a Internet. Pero, ¿alguien piensa que hay una manera de simular mediante programación una conexión lenta a Internet, para que yo pueda "ver" cómo funciona una aplicación bajo varias "velocidades de conexión"?
No me preocupa qué idioma se usa. Y no estoy buscando muestras de código ni nada, solo estoy interesado en la lógica detrás de esto.
fuente
A partir de Chrome 38 , puede hacerlo sin ningún complemento. Simplemente haga clic en inspeccionar elemento (o F12tecla de acceso rápido), luego haga clic en "alternar mod de dispositivo" y verá algo como esto:
Entre muchas otras características, le permite simular una conexión a Internet específica (3G, GPRS)
PD para personas que intentan limitar la velocidad de carga. Lamentablemente, en este momento no es posible.
PS2 ahora no necesita alternar nada. El panel de regulación está disponible directamente desde el panel de red.
Tenga en cuenta que al hacer clic en Sin limitación , puede crear sus opciones de limitación personalizadas.
fuente
Google recomienda :
fuente
En máquinas Linux puedes usar
wondershaper
{down} y {up} son ancho de banda en kpbs
Entonces, por ejemplo, si desea limitar el ancho de banda de la interfaz eth1 a un enlace ascendente de 256 kbps y un enlace descendente de 128 kbps,
Para borrar el límite,
fuente
Estaba usando http://www.netlimiter.com/ y funciona muy bien. No solo limita la velocidad para procesos únicos, sino que también muestra las tasas de transferencia reales.
fuente
Existen servidores proxy TCP, como iprelay y Sloppy, que configuran el ancho de banda para simular conexiones lentas. También puede dar forma al ancho de banda y simular la pérdida de paquetes utilizando herramientas de filtrado de IP como ipfw e iptables.
fuente
Puede probar Dummynet , puede simular limitaciones de cola y ancho de banda, retrasos, pérdidas de paquetes y efectos de múltiples rutas
fuente
Utilice un proxy de depuración web con funciones de limitación, como Charles o Fiddler .
Los encontrarás útiles para el desarrollo web en general. La principal diferencia es que Charles es shareware, mientras que Fiddler es gratis.
fuente
Además, para simular una conexión lenta en algunos * nixes, puede intentar usar ipfw . Ben Newman proporciona más información sobre esta pregunta de Quora
fuente
Use una herramienta como TCPMon . Puede fingir una conexión lenta.
Básicamente, usted solicita exactamente lo mismo y simplemente envía la misma solicitud al servidor real, y luego retrasa la respuesta con solo la cantidad establecida de bytes.
fuente
Puede usar NetEm (emulación de red) como un servidor proxy para emular muchas características de la red (velocidad, retraso, pérdida de paquetes, etc.). Controla la red usando el paquete iproute2 y está habilitado en el núcleo de la mayoría de las distribuciones de Linux.
Está controlado por la
tc
aplicación de línea de comandos (desde el paquete iproute2 ), pero también hay algunas GUI de 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, duplicación y / o corrupción, retraso aleatorio o definido, etc., por lo que puede emular varias redes de bajo rendimiento.
Para que su aplicación sea absolutamente transparente, puede configurar el sistema operativo para usar el servidor proxy 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.
fuente
Mac OSX desde 10.10 tiene una aplicación llamada Murus Firewall , que actúa como una GUI para pf, el reemplazo de ipfw.
Funciona muy bien para la limitación de todo el sistema o específica del dominio. 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 streaming.
fuente
También hay otra herramienta llamada WIPFW: http://wipfw.sourceforge.net/
Es un poco vieja escuela, pero puedes usarla para simular una conexión más lenta. Está basado en Windows, y la herramienta le permite al administrador monitorear cuánto tráfico recibe el enrutador de una determinada máquina, o cuánto tráfico WWW está reenviando, por ejemplo.
fuente
Actualizando esto (9 años después de que se le preguntó) ya que la respuesta que estaba buscando no fue mencionada:
Firefox también tiene preajustes para acelerar las velocidades de conexión. Encuéntralos en el Monitor de red pestaña de las herramientas para desarrolladores. El valor predeterminado es "Sin limitación".
La más lenta es GPRS ( Velocidad de descarga: 50 Kbps, Velocidad de carga: 20 Kbps, Latencia mínima (ms): 500 ), que va desde 2G, 3G y 4G 'bueno' y 'regular' a DSL y WiFi ( Velocidad de descarga: 30Mbps, Carga velocidad: 15 Mbps, latencia mínima (ms): 2 ).
Más en los documentos de Dev Tools .
fuente
Para Linux, la siguiente lista de documentos puede ser útil:
Personalmente, aunque Dummynet es bueno, creo que NetEm es el más versátil para mis casos de uso; Por lo general, estoy interesado en el efecto de los retrasos, en lugar del ancho de banda (es decir, problemas de conexión WiFi), y es muy fácil emular la pérdida / corrupción aleatoria de paquetes, etc. También es muy accesible y gratuito (a diferencia de Linktropy basado en hardware )
En una nota al margen, para Windows, Clumsy es increíble. También me gustaría agregar que (con respecto a los sitios web) la limitación del navegador no es un método preciso para emular problemas de red de la vida real (creo que "TKK" comentó algunas de las razones por las cuales se mencionó anteriormente).
¡Espero que esto ayude a alguien!
fuente
Un caso común de conformar una sola conexión TCP puede en realidad ensamblarse a partir de pares duales
socat
ycpipe
de manera UNIX de esta manera:socat TCP-LISTEN:5555,reuseaddr,reuseport,fork SYSTEM:'cpipe -ngr -b 1 -s 10 | socat - "TCP:localhost:5000" | cpipe -ngr -b 1 -s 300'
Esto simula una conexión con ancho de banda de aproximadamente 300 kb / s de su servicio en
:5000
y a aproximadamente 10 kB / s, y escuchas en:5555
las conexiones entrantes. Advertencia : Tenga en cuenta que esto por conexión , por lo que cada conexión TCP individual obtiene esta cantidad.Explicación: El exterior (izquierda)
socat
escucha con las opciones dadas:5555
como un servidor de bifurcación. El primercpipe
comando en laSYSTEM:...
opción a continuación estrangula datos, que entró en socket: 5555 (y sale del primero, externosocat
) a como máximo 10kByte / s. Esos datos se reenvían usando otrosocat
que se conectalocalhost:5000
(donde el servicio que desea ralentizar debería estar escuchando). Luego, los datos delocalhost:5000
se colocan en elcpipe
comando correcto , que (con los valores dados) lo acelera a aproximadamente 300kB / s.La opción
-ngr
acpipe
es importante. Hace que cpipe lea de forma no codiciosa desde su descriptor de archivo de entrada. De lo contrario, es posible que se quede atascado con los datos en los buffers que no se reenvían y esperan una respuesta.Usando la
buffer
herramienta más común en lugar decpipe
También es posible .(Créditos: Esto se basa en la receta de "doble tee" de Christophe Loor de la
socat
documentación)fuente