
В редких случаях я получаю 100% воспроизводимую задержку примерно в 2 минуты при запросе общедоступной веб-страницы.
Страница, о которой идет речь:https://id.openjdk.java.net/console/login
Объединяя журналы клиента (curl) и сервера (apache), типичный обмен выглядит следующим образом:
[client] 15:42:03.694959 => Send header, 96 bytes (0x60) 0000: GET /console/login HTTP/1.1
<DELAY HERE>
[server] [24/Feb/2015:22:44:26 +0000] "GET /console/login HTTP/1.1"
[client] 15:44:25.984150 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK
(Часы могут отличаться из-за разницы во времени, а секунды могут немного отличаться из-за рассинхронизации часов.)
Важные вещи:
- Клиент подключен через моего домашнего интернет-провайдера и ему дан публичный IP-адрес в определенной подсети. Если дать статический IP-адрес из другого диапазона, проблема исчезает.
- Запрошена страница '/console/login' на этом сервере. Задержки не будет, если я запрошу 'console/forgotPassword'. Я не замечал подобной задержки ни на одном другом сервере.
Вещи, которые (очевидно) не имеют значения:
- Домашняя сеть. Проблема сохраняется независимо от того, как клиент подключается к модему провайдера и при попытке использовать разные модемы.
- Время суток/заторы. Задержка постоянная, независимо от того, когда происходит запрос.
- DNS. Поведение такое же, если я использую IP-адрес вместо имени хоста.
- HTTPS-рукопожатие. Эта часть взаимодействия «curl» всегда выполняется без задержки; и нет задержки при доступе к «console/forgotPassword» через HTTPS.
- Конфигурация клиента. Воспроизводится в нескольких браузерах и через 'curl' в командной строке. Воспроизводится на нескольких клиентских системах и ОС.
- Загрузка изображения/скрипта/и т. д. Задержка возникает при использовании 'curl', который не запрашивает дополнительных ресурсов.
Мой вопрос: какое наиболее правдоподобное объяснение этому? Или: что мне делать дальше, чтобы это диагностировать?
Проблемы с сервером? Насколько я понимаюФормат журнала Apache, задержка происходитдосервер получает запрос GET, но я был бы признателен, если бы кто-то мог подтвердить, что это правильный способ чтения временных меток журнала. Если так, то мне не ясно, что, если вообще что-то, сервер может делать перед тем, как отправить запрос httpd, или что httpd может делать перед получением временной метки.
Проблемы с сетью? Самое сложное здесь то, что задержка, по-видимому, зависит от содержимого сообщения на уровне приложения: конкретная запрашиваемая страница. И это должно быть зашифровано. Администраторы интернет-провайдера (небольшого городка) говорят, что не выполняют фильтрацию содержимого... Интересно, в любом случае, есть ли у какого-то узла по пути мой диапазон IP-адресов в черном списке или что-то в этом роде.
решение1
У меня была похожая проблема, которая, похоже, была вызвана тайм-аутом удаленного соединения xdebug. Если ваша страница использует php с xdebug, возможно, это и является причиной вашей проблемы.
решение2
У меня страница загружается мгновенно.
(Знаю, это не имеет большого значения, но таков мой опыт.)
Откуда вы подключаетесь? Вполне вероятно, что вы сталкиваетесь с какой-то защитой от DDOS.
Возможно, ваш IP-адрес занесен в черный список или, по крайней мере, проверяется более тщательно, чем все остальное.