Dicas para conexões lentas

Mesmo que você tenha uma conexão ADSL em casa, existem muitas situações em que você pode ser obrigado a navegar usando uma conexão muito mais lenta, como ao acessar através de uma rede congestionada, ou em lugares afastados onde sua conexão 3G chaveie para o GPRS/EDGE com a taxa de transferência já próximo do mínimo, ou onde você precise se conectar via modem através de uma linha ruidosa.

A solução mais popular para melhorar a velocidade da conexão quando o link não ajuda é desativar a exibição das imagens (“editar > preferências > conteúdo > carregar imagens automaticamente” no Firefox) o que vai reduzir significativamente o volume de dados a carregar.

Entretanto, além da questão da banda existe um outro problema, que é a questão da latência. Em conexões via GPRS não é incomum que a latência da conexão chegue a 2 ou 3 segundos, já que em áreas afastadas o sinal precisa passar por várias torres de retransmissão até finalmente chegar aos roteadores. Isso significa que cada resolução de DNS demoraria no mínimo de 4 a 6 segundos!

A melhor saída para amenizar o problema é usar um cache de DNS local, reduzindo assim o número de requisições. No Linux você pode usar o dnsmasq.

Ele está disponível em quase todas as distribuições e pode ser instalado usando o gerenciador de pacotes, como em:

# urpmi dnsmasq

ou:

# apt-get install dnsmasq

Com o pacote instalado, abra o arquivo “/etc/dnsmasq.conf” e adicione as seguintes linhas logo no início da configuração:

listen-address=127.0.0.1
no-resolv
server=208.67.220.220
server=208.67.222.222

Elas fazem com que ele escute apenas conexões locais (precaução de segurança) e use os servidores DNS especificados nas duas últimas linhas. Os dois endereços do exemplo são os endereços do OpenDNS, mas você pode substituí-los pelos endereços do provedor caso note que eles estão mais rápidos.

Depois de salvar o arquivo, reinicie o serviço para que a configuração entre em vigor:

# /etc/init.d/dnsmasq restart

A partir daí, você pode configurar o sistema para usar o “127.0.0.1” como DNS primário, deixando que o dnsmasq cacheie as requisições. No Linux, você pode simplesmente editar o arquivo “/etc/resolv.conf“, adicionando a linha “nameserver 127.0.0.1” antes das demais, como em:

nameserver 127.0.0.1
nameserver 208.67.220.220
nameserver 208.67.222.222

Se o seu micro usa DHCP para obter a configuração da rede, o arquivo “/etc/resolv.conf” será modificado a cada acesso, voltando à configuração original, fornecida pelo servidor. Ao invés de ter que modificar o arquivo novamente, a cada acesso, adicione a linha abaixo no começo (começo, não final) do arquivo “/etc/dhcp3/dhclient.conf“, onde vai a configuração do cliente DHCP:

prepend domain-name-servers 127.0.0.1;

Esta linha faz com que ele sempre adicione a linha “nameserver 127.0.0.1” no início do arquivo “/etc/resolv.conf”, substituindo a edição manual.

Outra opção para acelerar a resolução de nomes é adicionar entradas para os sites que você acessa com frequência diretamente no arquivo “/etc/hosts”. Fazendo isso, o sistema deixará de perder tempo resolvendo os endereços e acessará diretamente os endereços especificados.

Para descobrir os endereços IP, use o comando “dig” (que faz parte do pacote “dnsutils”), como em:

$ dig gdhpress.com.br

O endereço aparece na seção “ANSWER SECTION”, como em:

;; ANSWER SECTION:
gdhpress.com.br. 81373 IN A 72.36.173.154

Ao adicionar as entradas no “/etc/hosts”, basta adicionar o endereço seguido pelo domínio (uma linha para cada site), como em:

127.0.0.1 gdh localhost
72.36.173.154 gdhpress.com.br
74.125.67.100 google.com

Outro problema comum em conexões GPRS/EDGE/3G em áreas distantes é a perda de pacotes, sobretudo perda de pacotes SYN, ACK e FIN, que são os responsáveis por iniciar e encerrar as conexões. As perdas fazem com que os aplicativos fiquem um longo tempo esperando por uma resposta do servidor remoto em vez de encerrarem a conexão. Isso causa diversas dores de cabeça, como os eternos “Aguardando resposta…” do Firefox.

No Linux, você pode amenizar o problema ajustando os tempos de timeout e o número de tentativas antes de encerrar as conexões. Isso faz com que o sistema passe a encerrar as conexões depois de algum tempo, em vez de deixar os aplicativos esperando por meia hora ou mais, como é o default. Para isso, use os comandos abaixo, como root:

cd /proc/sys/net/ipv4/
echo 2 > tcp_syn_retries
echo 2 > tcp_synack_retries
echo 3 > tcp_retries1
echo 5 > tcp_retries1
echo 30 > tcp_fin_timeout
echo 3 > tcp_keepalive_probes
echo 30 > tcp_keepalive_intvl

Essas configurações não são permanentes, por isso caso as alterações não surtam o efeito desejado, basta reiniciar o micro para que as configurações default sejam restabelecidas.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X