在狭义的情况下,当我请求一个公共网页时,我得到大约2分钟的100%可重现的延迟。
有问题的网页: 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
(由于时区不同,小时数有所不同,由于不同步的时钟,秒数可能稍微偏离)。
重要的事情是:
事情是(显然)不相关的:
我的问题:这个最合理的解释是什么? 或者:接下来我应该怎么做来诊断呢?
服务器问题? 据我了解Apache日志格式 ,延迟发生在服务器获取GET请求之前,但如果有人可以确认这是正确的方式来读取日志时间戳,我将不胜感激。 如果是这样,那么在向httpd发出请求之前,服务器可能会做什么,或者在获取时间戳之前httpd可能正在做什么,我不清楚。
networking问题? 这里棘手的部分是,延迟显然取决于应用程序级别的消息内容:被请求的特定页面。 而且应该encryption。 (小城镇)的ISPpipe理员说,他们不执行内容过滤…无论如何,如果沿途的某个节点有我的IP地址范围在黑名单或什么的。
我有一个类似的问题,这似乎是由xdebug远程连接超时造成的。 如果您的网页使用xdebug的PHP,也许这是导致您的问题。