Я пытаюсь проверить, используются ли постоянные соединения HTTP во время связи с запущенным мной веб-сервером Tomcat. В настоящее время я могу получить ресурс на моем сервере из браузера (например, Chrome) и проверить с помощью netstat, что соединение установлено:
# visit http://server:8080/path/to/resource in Chrome
[server:/tmp]$ netstat -a
...
tcp 0 0 server.mydomain:webcache client.mydomain:55502 ESTABLISHED
Однако, если я использую curl, я никогда не увижу соединение с сервером в netstat.
[client:/tmp]$ curl --keepalive-time 60 --keepalive http://server:8080/path/to/resource
...
[server:/tmp]$ netstat -a
# no connection exists for client.mydomain
Я также попытался использовать следующую команду curl:
curl -H "Keep-Alive: 60" -H "Connection: keep-alive" http://server:8080/path/to/resource
Вот версия curl моей клиентской машины:
[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
Как заставить curl использовать постоянное / keepalive соединение? Я немного погуглил на эту тему, но безуспешно. Следует отметить, что я также использовал links
на клиентском компьютере для получения ресурса, и это дает мне ESTABLISHED
соединение на сервере.
Дайте мне знать, если мне нужно предоставить больше информации.
Ответы:
curl уже использует keepalive по умолчанию.
В качестве примера:
Производит следующее:
Этот фрагмент:
Указывает, что он повторно использовал то же соединение.
Используйте тот же самый "
curl -v http://my.server/url1 http://my.server/url2
" вызов для вашего сервера и убедитесь, что вы видите то же сообщение.Попробуйте использовать tcpdump вместо netstat, чтобы увидеть, как обрабатываются пакеты. netstat даст вам только краткий обзор того, что происходит, тогда как с помощью tcpdump вы увидите каждый отдельный пакет. Другой вариант - Wireshark.
источник
ESTABLISHED
соединение на сервере, только когда я использую curl.Если ваш сервер поддерживает «KeepAlive On», вы можете использовать telnet для поддержания постоянного соединения следующим образом:
источник
Один из способов проверить постоянное соединение HTTP / Keep-Alive состоит в том, чтобы проверить, используется ли соединение TCP для последующих соединений.
Например. У меня есть файл, содержащий ссылку на http://google.com повторяется несколько раз.
Выполнение команды ниже откроет http://google.com несколько раз с одним и тем же TCP-соединением.
И в течение этого времени, если вы используете netstat, вы обнаружите, что TCP-соединение не изменилось, и старое соединение возобновляется (сокет остается прежним).
Но когда мы просим клиента использовать HTTP 1.0, который не поддерживает постоянное соединение HTTP, адрес сокета изменяется
Исходя из этого, мы можем быть уверены, что TCP-соединение используется повторно.
источник
--keepalive времени
человек кудри ... человек ..: D
источник
--keepalive-time 60
в моем примере?