Назад | Перейти на главную страницу

Как отладить «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, но у меня все еще возникают те же проблемы.

Вопрос

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

Вы когда-нибудь пробовали ждать, чтобы увидеть, какой код состояния 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.

У меня была очень похожая проблема на свежеприготовленный Экземпляр AWS:

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

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

Иди разберись.

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