Linux estabelecimento de conexão TCP é muito lento

2

Não tenho certeza do que está errado, mas toda conexão de rede de saída é muito lenta no meu servidor (chamada dikkenek nos trechos abaixo). Parece que está no estabelecimento da conexão.

bicou@dikkenek:~$ time ping -c 1 free.fr
PING free.fr (212.27.48.10) 56(84) bytes of data.
64 bytes from www.free.fr (212.27.48.10): icmp_seq=1 ttl=58 time=12.1 ms

--- free.fr ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 12.185/12.185/12.185/0.000 ms

real    0m10.025s
user    0m0.000s
sys     0m0.000s

Como você pode ver, a conexão está perfeitamente bem (12ms na página inicial do ISP), mas levou 10 segundos para executar o ping.

Ping diretamente no IP é muito mais rápido:

bicou@dikkenek:~$ time ping -c 1 212.27.48.10
PING 212.27.48.10 (212.27.48.10) 56(84) bytes of data.
64 bytes from 212.27.48.10: icmp_seq=1 ttl=58 time=12.0 ms

--- 212.27.48.10 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 12.045/12.045/12.045/0.000 ms

real    0m0.013s
user    0m0.000s
sys     0m0.000s

Então, achei que tinha um problema de resolução de nomes, mas também é rápido:

bicou@dikkenek:~$ time host free.fr
free.fr has address 212.27.48.10
free.fr has IPv6 address 2a01:e0c:1::1
free.fr mail is handled by 20 mx2.free.fr.
free.fr mail is handled by 10 mx1.free.fr.

real    0m3.022s
user    0m0.008s
sys     0m0.000s

OK, demorou 3 segundos, mas não é mais do que uma máquina rápida, veja abaixo.

Como comparação, aqui estão os mesmos comandos executados no meu laptop (Mac OS X):

<9> Mon May 11 23:05:42 ~ $ time ping -c 1 free.fr
PING free.fr (212.27.48.10): 56 data bytes
64 bytes from 212.27.48.10: icmp_seq=0 ttl=58 time=15.194 ms

--- free.fr ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 15.194/15.194/15.194/0.000 ms

real    0m0.026s
user    0m0.001s
sys     0m0.003s
<10> Mon May 11 23:05:48 ~ $ time ping -c 1 212.27.48.10
PING 212.27.48.10 (212.27.48.10): 56 data bytes
64 bytes from 212.27.48.10: icmp_seq=0 ttl=58 time=44.084 ms

--- 212.27.48.10 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 44.084/44.084/44.084/0.000 ms

real    0m0.060s
user    0m0.001s
sys     0m0.003s
<11> Mon May 11 23:06:09 ~ $ time host free.fr
free.fr has address 212.27.48.10
free.fr has IPv6 address 2a01:e0c:1::1
free.fr mail is handled by 20 mx2.free.fr.
free.fr mail is handled by 10 mx1.free.fr.

real    0m3.059s
user    0m0.006s
sys     0m0.006s

O ping é muito mais rápido.

Conexões HTTP simples também são muito lentas:

bicou@dikkenek:~$ time curl -sI 'free.fr'
HTTP/1.1 302 Moved Temporarily
Server: nginx
Date: Mon, 11 May 2015 21:10:47 GMT
Content-Type: text/html
Content-Length: 154
Connection: keep-alive
Location: http://portail.free.fr/


real    0m5.548s
user    0m0.008s
sys     0m0.000s

Meu laptop:

<14> Mon May 11 23:08:11 ~ $ time curl -sI 'free.fr'
HTTP/1.1 302 Moved Temporarily
Server: nginx
Date: Mon, 11 May 2015 21:12:04 GMT
Content-Type: text/html
Content-Length: 154
Connection: keep-alive
Location: http://portail.free.fr/


real    0m0.043s
user    0m0.005s
sys     0m0.004s

Um iperf entre os dois (nos dois sentidos) está perfeitamente bem:

bicou@dikkenek:~$ iperf -c 192.168.0.13 -r
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to 192.168.0.13, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  5] local 192.168.0.10 port 55416 connected with 192.168.0.13 port 5001
[ ID] Interval       Transfer     Bandwidth
[  5]  0.0-10.2 sec  8.50 MBytes  7.01 Mbits/sec
[  4] local 192.168.0.10 port 5001 connected with 192.168.0.13 port 55140
[  4]  0.0-10.4 sec  16.4 MBytes  13.3 Mbits/sec

A taxa de transferência não é tão boa porque o laptop é conectado apenas por WiFi. O servidor está conectado ao roteador usando um cabo ethernet de 1 Gbps.

iperf para o mundo exterior funciona como anunciado (ISP diz UL de 1.1Mbps UL / 31.5Mbps):

bicou@dikkenek:~$ iperf -c iperf.testdebit.info -r
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to iperf.testdebit.info, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.10 port 37395 connected with 89.84.127.54 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-11.0 sec  1.88 MBytes  1.43 Mbits/sec
[  5] local 192.168.0.10 port 5001 connected with 89.84.127.54 port 33129
[  5]  0.0-10.2 sec  30.4 MBytes  24.9 Mbits/sec

Minha principal preocupação é a lentidão do http, que está quase sempre atrasando 5,5 segundos.

O servidor roda Debian 8 jessie, o laptop roda o Mac OS X.10 Yosemite.

Quais ferramentas posso usar para solucionar a lentidão do Debian?

Edit: como Otheus apontou, é provável que seja uma questão de DNS. Aqui está um teste que confirma:

bicou@dikkenek:~$ time curl -sIH 'Host: free.fr' 212.27.48.10
HTTP/1.1 302 Moved Temporarily
Server: nginx
Date: Mon, 11 May 2015 21:57:19 GMT
Content-Type: text/html
Content-Length: 154
Connection: keep-alive
Location: http://portail.free.fr/


real    0m0.034s
user    0m0.004s
sys     0m0.000s

Agora, como posso acelerar as coisas aqui?

    
por Benoit Duffez 11.05.2015 / 23:52

1 resposta

4

Sua configuração de DNS está desarrumada. Verifique seu /etc/resolv.conf e assegure-se de que apenas servidores válidos estejam listados.

    
por 12.05.2015 / 04:38