Chrome中Request Sent耗时2.51秒异常原因咨询
这确实是个反常的情况——按照Chrome的定义,Request Sent阶段是浏览器将请求数据发送到服务器的耗时,正常情况下确实应该只有几分之一毫秒。结合我排查这类网络延迟问题的经验,可能的原因主要有以下几点:
本地网络资源竞争或故障
如果你的设备同时在进行高带宽消耗的操作(比如大文件下载、4K视频直播),浏览器的请求数据包会被挤在队列里等待发送,直接拉长Request Sent的耗时。另外,网卡驱动异常、VPN/代理服务器响应缓慢,也会导致请求在本地到网络出口的阶段出现阻塞。TCP传输层面的限制
服务器端的TCP接收窗口设置过小,会导致浏览器每次只能发送少量数据,必须等待服务器的ACK确认后才能继续发送剩余部分。如果请求内容需要分多次发送,这个等待过程会累积成明显的延迟。另外,TCP连接复用失败(比如服务器主动关闭了持久连接),导致浏览器不得不重新建立连接,虽然理论上这部分延迟属于Connect阶段,但有时候会被误统计到Request Sent中。浏览器主线程阻塞
如果页面中存在大量同步JavaScript执行、频繁的DOM重绘/重排操作,浏览器的主线程会被占满,导致请求发送的任务被推迟执行。这种情况下,网络本身没问题,但浏览器没办法及时调度发送请求,最终统计的Request Sent时长就会异常增加。服务器端接收阻塞
服务器的接收缓冲区已满,或者服务器进程正处于高负载状态(比如CPU、内存占用过高),无法及时处理新的请求数据,会导致浏览器的发送操作一直处于等待状态,直到服务器腾出资源接收数据。特殊请求场景(针对大请求)
如果是POST请求且携带了较大的请求体(比如上传文件、提交大量表单数据),Request Sent耗时变长是正常的,但如果是小请求出现这种情况,这个原因可以排除。
内容的提问来源于stack exchange,提问作者Pavel

