我有一个Linode服务器,将不会返回到我平常的ISP的随机GET请求(但从来没有被卡住每次相同的一个)。 如果我切换ISP或使用Opera VPN ,一切运作良好。
Linode说,他们看起来都很好。 服务器的资源很好(这是一个开发服务器,目前只用于testing,非常轻的stream量和开销)。 他们说要检查我的ISP。 我的ISP说,他们都看起来不错,但他们会让工程师看看它。
正如我期待的那样,我们从ISP那里找不到任何答案,我试图find客观的证据来certificate我的诊断非常有限。 我掸掉了Wireshark ,开始诊断。
如果我使用ISP的问题,从浏览器的angular度来看,这有点杂乱无章。 有时一个页面加载正常,有时加载正常,但其他资产将无法加载(CSS,JS,JPEG等)。 有时,页面本身不会加载,并且无限期地保持“加载”,没有服务器响应。
在Wireshark中 http.time > 1证实了这个问题没有太多的超时或者长的加载时间,更多的是请求加载或者不加载。
我的标题没有显示任何exception,例如:
GET /theme/css/style.css HTTP/1.1 Host:site.com Accept:text/css,*/*;q=0.1 Accept-Language:en-ie Accept-Encoding:gzip, deflate Connection:keep-alive Pragma:no-cache User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30 Referer:http%3a//site.com/section/ DNT:1 Cache-Control:no-cache
当我使用Wireshark进行捕捉时,浏览器中的请求停止时,我没有看到太多反馈。 不过,上次我尝试了一下,我得到了一个重复的请求:
localhost server TCP 66 [TCP Retransmission] 61162 → 80 [FIN, ACK]
每分钟播放一次,直到最后以[RST, ACK]结束,尽pipe浏览器仍然显示加载页面卡住了。
我试着运行详细的curl请求到服务器上的个人资产(在这种情况下是一个JPEG文件)。 我的下载jpeg的请求在前三次运行正常,唯一的exception(除非它是预期的?)是为相同的文件下载的字节数量会在一些请求中改变。 例如:
curl请求1:
< Content-Type: image/jpeg < { [2642 bytes data] * Curl_http_done: called premature == 0 100 384k 100 384k 0 0 994k 0 --:--:-- --:--:-- --:--:-- 995k
curl请求2:
< Content-Type: image/jpeg < { [1194 bytes data] * Curl_http_done: called premature == 0 100 384k 100 384k 0 0 852k 0 --:--:-- --:--:-- --:--:-- 853k
curl请求3:
< Content-Type: image/jpeg < { [2642 bytes data] 26 384k 26 101k 0 0 493k 0 --:--:-- --:--:-- --:--:-- 493k * Curl_http_done: called premature == 0 100 384k 100 384k 0 0 1000k 0 --:--:-- --:--:-- --:--:-- 1000k
然后,第四个请求不会下载文件,报告错误或closures连接。 我在浏览器中看到同样的行为。 数据的字节卡在运行的计时器,现在接近2分钟:
Content-Type: image/jpeg < { [1194 bytes data] 5 384k 5 22914 0 0 66 0 1:39:18 0:05:43 1:33:35 0
感觉就像请求到达服务器,然后通信回到不了我。 最后一个请求完整(30秒后):
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying (IP ADDRESS)... * TCP_NODELAY set 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0* Connected to serverdomain.com (IP ADDRESS) port 80 (#0) 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0> GET /images/user/176131.jpg HTTP/1.1 > Host: serverdomain.com > User-Agent: curl/7.51.0 > Accept: */* > < HTTP/1.1 200 OK < Date: Fri, 18 Aug 2017 14:04:20 GMT < Server: Apache/2.4.18 (Ubuntu) < Last-Modified: Thu, 17 Aug 2017 09:04:47 GMT < ETag: "60048-556ef4de2cad8" < Accept-Ranges: bytes < Content-Length: 393288 < Connection: close < Content-Type: image/jpeg < { [1194 bytes data] 5 384k 5 22914 0 0 50 0 2:11:05 0:07:36 2:03:29 0