J'essaie de vérifier que les connexions persistantes HTTP sont utilisées lors de la communication avec un serveur Web Tomcat en cours d'exécution. Actuellement, je peux récupérer une ressource sur mon serveur depuis un navigateur (par exemple, Chrome) et vérifier à l’aide de netstat que la connexion est établie:
# visit http://server:8080/path/to/resource in Chrome
[server:/tmp]$ netstat -a
...
tcp 0 0 server.mydomain:webcache client.mydomain:55502 ESTABLISHED
Cependant, si j'utilise curl, je ne vois jamais la connexion sur le serveur dans netstat.
[client:/tmp]$ curl --keepalive-time 60 --keepalive http://server:8080/path/to/resource
...
[server:/tmp]$ netstat -a
# no connection exists for client.mydomain
J'ai également essayé d'utiliser la commande curl suivante:
curl -H "Keep-Alive: 60" -H "Connection: keep-alive" http://server:8080/path/to/resource
Voici la version curl de ma machine cliente:
[server:/tmp]$ curl -V
curl 7.19.5 (x86_64-unknown-linux-gnu) libcurl/7.19.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5 libssh2/1.1
Protocols: tftp ftp telnet dict http file https ftps scp sftp
Features: IDN IPv6 Largefile NTLM SSL libz
Comment puis-je me permettre d'utiliser une connexion persistante / persistante? J'ai fait pas mal de recherches sur le sujet sur Google, mais sans succès. Il est à noter que j'ai également utilisé links
sur la machine cliente pour récupérer la ressource, ce qui me donne une ESTABLISHED
connexion sur le serveur.
Faites-moi savoir si j'ai besoin de fournir plus d'informations.
Réponses:
curl utilise déjà Keepalive par défaut.
Par exemple:
Produit ce qui suit:
Cet extrait:
Indique qu'il a réutilisé la même connexion.
Utilisez la même "
curl -v http://my.server/url1 http://my.server/url2
" invocation sur votre serveur et vérifiez que vous voyez le même message.Pensez à utiliser tcpdump au lieu de netstat pour voir comment les paquets sont gérés. netstat ne vous donnera qu'un aperçu momentané de ce qui se passe, alors qu'avec tcpdump, vous verrez chaque paquet impliqué. Une autre option est Wireshark.
la source
ESTABLISHED
connexion sur le serveur uniquement lorsque j'utilise curl.Si votre serveur autorise 'KeepAlive On', vous pouvez utiliser telnet pour maintenir une connexion persistante comme ceci:
la source
Une façon de tester la connexion persistante HTTP / Keep-Alive consiste à vérifier si la connexion TCP est réutilisée pour les connexions suivantes.
Par exemple. J'ai un fichier contenant un lien de http://google.com répété plusieurs fois.
L'exécution de la commande ci-dessous ouvrira http://google.com plusieurs fois avec la même connexion TCP.
Et pendant ce temps, si vous netstat, vous pouvez constater que la connexion TCP n’a pas changé et que l’ancienne est restaurée (le socket reste identique).
Mais lorsque nous demandons au client d’utiliser HTTP 1.0 qui ne prend pas en charge la connexion HTTP persistante, l’adresse de socket change
à partir de cela, nous pouvons être sûrs que la connexion TCP est réutilisée.
la source
--keepalive time
homme curl ... homme ..: D
la source
--keepalive-time 60
dans mon exemple?