服务器不会向一个ISP返回一些请求

我有一个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浏览器仍然显示加载页面卡住了。

更多信息:

  • 我在所有testing中禁用了caching,但caching也被清空以及冲洗DNS。
  • 这可能是不相关的,因为使用标准ISP连接的networking上的每个设备和浏览器都会发生这种结果。
  • 我已经能够testing的任何其他ISP或VPN使用相同的设备和浏览器从服务器加载所有请求。
  • 根据我的ISP的标准诊断程序,我重置了调制解调器和路由器固件
  • 我试过把DNS切换到Google的。
  • 我更新了服务器上的所有软件包(这是运行Apache的Ubuntu)
  • 除了在这个问题开始之后执行的这些更新之外,我还没有更改服务器上的任何configuration或更新。 现在已经运行了大约两个月了,而且两天前就开始了。
  • 诊断正在正常的http上完成
  • 为了发展的目的,我向服务器提出了很多要求,并询问我的ISP是否可能触发了一些活动标志 – 他们向我保证,没有什么效果。
  • 我不能在这里列出服务器不幸的。
  • 我没有其他网站的问题。
  • ISP速度和延迟不是问题。
  • 在服务器上运行的所有三个虚拟主机都受到影响,尽pipe它们只是将子域或httpredirect到https请求,因为始终使用相同的域。

更新

诊断:

我试着运行详细的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