Je ne suis pas sûr de ce qui ne va pas, mais chaque connexion réseau sortante est très lente sur mon serveur (appelé dikkenek dans les extraits ci-dessous). Il semble que le problème se situe au niveau de l'établissement de la connexion.
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
Comme vous pouvez le voir, la connexion est parfaitement bonne (12 ms vers la page d'accueil de mon fournisseur d'accès), mais il a fallu 10 secondes pour lancer le ping.
L'envoi d'un ping directement à l'IP est beaucoup plus rapide :
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
Je pensais avoir un problème de résolution de nom, mais c'est rapide aussi :
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, cela a pris 3 secondes, mais ce n'est pas plus long qu'une machine rapide, voir ci-dessous.
À titre de comparaison, voici les mêmes commandes exécutées sur mon ordinateur portable (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
Le ping est beaucoup plus rapide.
Les connexions HTTP simples sont également très lentes :
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
Mon ordinateur portable :
<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
Un iperf entre les deux (dans les deux sens) est tout à fait correct :
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
Le débit n'est pas très élevé car l'ordinateur portable est connecté en WiFi uniquement. Le serveur est connecté au routeur à l'aide d'un câble Ethernet 1Gbps.
iperf vers le monde extérieur fonctionne comme annoncé (ISP dit 1.1Mbps UL / 31.5Mbps DL) :
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
Ma principale préoccupation est la lenteur du serveur, qui a presque toujours un retard de 5,5 secondes.
Le serveur fonctionne sous Debian 8 jessie, l'ordinateur portable fonctionne sous Mac OS X.10 Yosemite.
Quels outils puis-je utiliser pour résoudre le problème de lenteur de Debian ?
Edit : comme Otheus l'a souligné, c'est probablement un problème de DNS. Voici un test qui le confirme :
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
Maintenant, comment puis-je accélérer les choses ici ?