Как отладить "HTTP-запрос отправлен, ожидая ответа"?

У меня есть сервер Linux на ADSL-соединении, и я просто заметил, что иногда я получаю

Connecting to example.com|xxx.xxx.xxx.122|:80... connected.
HTTP request sent, awaiting response...

когда я использую wget или, например, браузер, как Firefox.

В случае wget нажмите CTRL-C, а затем попробуйте снова "решить проблему", а в случае Firefox перезагрузка страницы также приводит к загрузке страницы.

Это кажется случайным, когда это происходит. Я попытался изменить DNS на DNS от Google, но у меня все еще возникают те же проблемы.

Вопрос

Как мне отладить что-то подобное, чтобы я мог найти источник проблемы или, возможно, шаблон?

4 ответа

Решение

Вы когда-нибудь пытались дождаться, чтобы увидеть, какой код статуса HTTP возвращается?

Чтобы отладить этот случай, откройте 2 терминала: во-первых, ssh на ваш сервер и введите:

# tcpdump -vv -s0 tcp port 80 -w /tmp/example.pcap

(вы также можете добавить and src host <client_IP> отфильтровывать ненужные запросы)

а во втором используйте wget чтобы просмотреть ваш сайт, воспроизведите эту проблему и переключитесь на первый терминал и нажмите Ctrl + C.

Скопируйте это .pcap файл клиенту и откройте с помощью Wireshark, чтобы увидеть, что происходит.

Если ты видишь:

HTTP request sent, awaiting response...

Это означает, что DNS работает нормально, TCP-соединение установлено, и запрос отправлен. Я думаю, что причиной ваших проблем является удаленный сервер, который может быть занят.

Как сказал @quanta, захват сети даст вам более подробную информацию. В Wireshark просто используйте Follow TCP Stream, чтобы увидеть HTTP-разговор. Обратите внимание на сообщения ICMP тоже.

Перезагрузите сервер Apache. Это должно решить проблему.

У меня была очень похожая проблема на недавно подготовленном экземпляре AWS:

apt install потерпит неудачу, утверждая, что не может получить какой-то пакет. Когда я попытался получить пакет вручную с wgetиногда он зависал до бесконечности, а иногда сразу же (после бесконечного зависания).

Перезапуск сервера не помог. Затем я остановил и заново подготовил экземпляр, после чего у меня не возникло проблем с новым экземпляром.

Пойди разберись.

Другие вопросы по тегам