我的 WordPress 网站出现了一个奇怪的问题(http://rohitnair.info/)。“第一个请求”需要很长时间才能响应。任何后续响应都表现正常。我在调试时观察到的事情
- 清除浏览器缓存并重新加载可以正常工作,并且页面加载速度足够快
- 清除 cookies 并重新加载可重现该问题。
- nslookup 等不需要花费时间(因此排除 DNS 查找问题)
- 该问题似乎可以从其他机器/网络重现(因此排除本地机器/网络问题)
- mysql 慢查询日志中没有任何内容
因此,我在此上下文中将“第一个请求”定义为未为域设置 cookie 的请求。重现此问题的另一种简单方法是使用 curl 而不发送任何 cookie。这是 curl -v 的输出
$ time curl -v rohitnair.info
* About to connect() to rohitnair.info port 80 (#0)
* Trying 23.21.171.95... connected
* Connected to rohitnair.info (23.21.171.95) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.19.7 (i386-redhat-linux-gnu) libcurl/7.19.7 NSS/3.12.9.0 zlib/1.2.3 libidn/1.18 libssh2/1.2.2
> Host: rohitnair.info
> Accept: */*
>
漫长的等待
[回复]
* Connection #0 to host rohitnair.info left intact
* Closing connection #0
real 1m0.518s
user 0m0.003s
sys 0m0.011s
可以看出,服务器需要一分多钟的时间才能返回响应。
该堆栈是 wordpress + nginx,托管在 Amazon EC2 微型实例上。我还注意到,直到响应被提供或请求被取消(不确定这是否是预期行为),请求才会显示在 nginx 访问日志中。我完全不知道是什么原因导致了这个问题。任何帮助都将不胜感激!
答案1
您尚未排除 DNS,因为 nslookup 与执行请求的 nginx 或 PHP 不同。观察 DNS 请求,看看其中是否有任何明显愚蠢的请求。
每当出现意外缓慢的情况(HTTP 请求、初始 ssh 连接等)时,但一开始很慢,这通常是由于反向 DNS 请求超时造成的。