Eu sei que isso é uma pergunta estranha. Como geralmente desenvolvo aplicativos com base na "suposição" de que todos os usuários têm uma conexão lenta à Internet. Mas, alguém acha que existe uma maneira de simular programaticamente uma conexão lenta à Internet, para que eu possa "ver" como um aplicativo funciona sob várias "velocidades de conexão"?
Não estou preocupado com o idioma usado. E não estou procurando exemplos de código nem nada, apenas interessado na lógica por trás disso.
fonte
A partir do Chrome 38, você pode fazer isso sem nenhum plug-in. Basta clicar em inspecionar o elemento (ou F12tecla de atalho), clicar em "alternar mod do dispositivo" e você verá algo assim:
Entre muitos outros recursos, ele permite simular uma conexão específica à Internet (3G, GPRS)
PS para pessoas que tentam limitar a velocidade de upload. Infelizmente no momento atual não é possível.
PS2 agora você não precisa alternar nada. O painel de controle está disponível diretamente no painel de rede.
Observe que, ao clicar em Sem limitação, você pode criar suas opções personalizadas de limitação.
fonte
O Google recomenda :
fonte
Em máquinas Linux, você pode usar
wondershaper
o {down} e o {up} são largura de banda em kpbs
Por exemplo, se você deseja limitar a largura de banda da interface eth1 para o uplink de 256kbps e o downlink de 128kbps,
Para limpar o limite,
fonte
Eu estava usando http://www.netlimiter.com/ e funciona muito bem. Não apenas limita a velocidade para processos únicos, mas também mostra as taxas de transferência reais.
fonte
Existem proxies TCP por aí, como iprelay e Sloppy, que modelam a largura de banda para simular conexões lentas. Você também pode modelar a largura de banda e simular a perda de pacotes usando ferramentas de filtragem de IP, como ipfw e iptables.
fonte
Você pode experimentar o Dummynet , ele simula limitações de fila e largura de banda, atrasos, perdas de pacotes e efeitos de caminhos múltiplos
fonte
Use um proxy de depuração da web com recursos de otimização, como Charles ou Fiddler .
Você os encontrará desenvolvimento web útil em geral. A principal diferença é que Charles é shareware, enquanto o Fiddler é gratuito.
fonte
Além disso, para simular uma conexão lenta em alguns * nixes, você pode tentar usar o ipfw . Mais informações são fornecidas pela resposta de Ben Newman nesta pergunta do Quora
fonte
Use uma ferramenta como o TCPMon . Pode simular uma conexão lenta.
Basicamente, você solicita exatamente a mesma coisa e apenas encaminha a mesma solicitação ao servidor real e atrasa a resposta apenas com a quantidade definida de bytes.
fonte
Você pode usar o NetEm (emulação de rede) como um servidor proxy para emular muitas características da rede (velocidade, atraso, perda de pacotes etc.). Controla a rede usando o iproute2 pacote e é ativado no kernel da maioria das distribuições Linux.
É controlado pelo
tc
aplicativo de linha de comando (do pacote iproute2 ), mas também existem algumas GUIs da interface da web para NetEm, por exemplo, PHPnetemGUI2 .A vantagem é que, como escrevi, ele pode simular não apenas velocidades diferentes da rede, mas também, por exemplo, perda de pacotes, duplicação e / ou corrupção, atraso aleatório ou definido etc., para que você possa emular várias redes com desempenho ruim.
Para seu aplicativo, é absolutamente transparente, você pode configurar o sistema operacional para usar o servidor proxy NetEm, para que todas as conexões dessa máquina passem pelo NetEm. Ou você pode configurar apenas seu aplicativo para usá-lo como proxy.
Eu tenho usado para testar o desempenho de um aplicativo Android em várias redes de baixo desempenho emuladas.
fonte
O Mac OSX, desde a versão 10.10, possui um aplicativo chamado Murus Firewall , que atua como uma interface gráfica para o pf, o substituto do ipfw.
Funciona muito bem para a otimização em todo o sistema ou em domínios específicos. Eu era capaz de usá-lo para deslizar minha velocidade de download entre 300Kbps e 30Mbps para testar como um player de vídeo em fluxo se ajusta.
fonte
Há também outra ferramenta chamada WIPFW - http://wipfw.sourceforge.net/
É um pouco antiquado, mas você pode usá-lo para simular uma conexão mais lenta. É baseado no Windows, e a ferramenta permite ao administrador monitorar quanto tráfego o roteador está recebendo de uma determinada máquina ou quanto tráfego da WWW está encaminhando, por exemplo.
fonte
A atualização (9 anos após a solicitação) como resposta que eu estava procurando não foi mencionada:
O Firefox também possui predefinições para acelerar as velocidades de conexão. Encontre-os na guia Monitor de rede das ferramentas do desenvolvedor. O padrão é 'Sem aceleração'.
O mais lento é GPRS ( velocidade de download: 50 Kbps, velocidade de upload: 20 Kbps, latência mínima (ms): 500 ), variando de 'bom' e 'regular' 2G, 3G e 4G a DSL e WiFi ( velocidade de download: 30Mbps, upload velocidade: 15 Mbps, latência mínima (ms): 2 ).
Mais nos documentos do Dev Tools .
fonte
Para Linux, a seguinte lista de documentos pode ser útil:
Pessoalmente, enquanto o Dummynet é bom, acho o NetEm o mais versátil para meus casos de uso; Geralmente, estou interessado no efeito de atrasos, em vez da largura de banda (ou seja, problemas de conexão WiFi), e é super fácil emular a perda / corrupção aleatória de pacotes, etc. É também muito acessível e gratuito (ao contrário do Linktropy baseado em hardware )
Em uma nota lateral, para Windows, Clumsy é incrível. Gostaria também de acrescentar que a otimização do navegador (em sites) não é um método preciso para simular problemas de rede da vida real (acho que o "TKK" comentou algumas das razões pelas quais acima).
Espero que isso ajude alguém!
fonte
Um caso comum de moldar uma única conexão TCP pode realmente ser montado a partir de pares duplos
socat
e docpipe
modo UNIX, assim:socat TCP-LISTEN:5555,reuseaddr,reuseport,fork SYSTEM:'cpipe -ngr -b 1 -s 10 | socat - "TCP:localhost:5000" | cpipe -ngr -b 1 -s 300'
Isso simula uma conexão com largura de banda de cerca de 300kb / s de seu serviço de
:5000
e para em aproximadamente 10 KB / s e escutas sobre:5555
as conexões de entrada. Advertência : Observe que essa conexão por conexão faz com que cada conexão TCP individual obtenha esse valor.Explicação: A parte externa (esquerda)
socat
ouve com as opções fornecidas:5555
como um servidor de bifurcação. O primeirocpipe
comando daSYSTEM:...
opção limita os dados inseridos no soquete: 5555 (e sai do primeiro, externosocat
) para no máximo 10kByte / s. Esses dados são então encaminhados usando outrosocat
que se conectalocalhost:5000
(onde o serviço que você deseja diminuir a velocidade deve estar ouvindo). Os dados delocalhost:5000
são então colocados nocpipe
comando certo , que (com os valores fornecidos) os acelera para cerca de 300kB / s.A opção
-ngr
paracpipe
é importante. Isso faz com que o cpipe leia não avidamente de seu descritor de arquivo de entrada. Caso contrário, você poderá ficar com os dados nos buffers que não estão sendo encaminhados e aguardando uma resposta.Usando a
buffer
ferramenta mais comum em vez decpipe
É provável que também seja possível .(Créditos: baseia-se na receita "tee duplo" de Christophe Loor da
socat
documentação)fonte