在内网搭建的web服务经常会遇到个别页面打开特别慢的情况,今天分享一个卡慢的案例,一起看一下这类问题的处理思路。
例子是一个内网测速网站,用来测试终端到服务器之间的上传、下载速度。因为内网存在很多的小路由、小交换机,存在百兆千兆混杂的情况,所以经常需要测试终端在内网的网络质量。
出现问题的网站界面如下:
部分网络区域的终端在点击测速按钮后会卡住,整个页面会失去响应。正常情况下应该立刻出现测速指针抖动的画面,像下面这样:
在chrome浏览器上使用F12快捷键打开“开发者工具”,在“网络”标签观察页面请求的耗时情况。多次测试发现有一个URL请求明显超时,显示 TTFB 持续约1分钟。
TTFB 是 Time to First Byte 的缩写,字面翻译是首字节到达时间,可以理解为服务器的页面响应时间。单独访问对应 URL 发现页面开始转圈,与实际网页卡慢的情况一致。整个页面就是被这个请求卡住了。随后登录服务器后台查看相应模块的源代码,在代码中找到了慢的原因。
在测速逻辑中有处理 ISP 即网络运营商的功能,而内网不涉及运营商定位的问题。因为内网到外网不可达,所以在请求公网资源时会出现超时。
处理的思路是注释掉该函数或函数内直接返回空值,处理掉访问外部资源的代码后,网页不再出现卡慢的问题。
总结
自己搭建的服务,在引用的源代码中经常会有外链,当外链访问失败时就会出现卡慢。内网一般都存在对互联网外连的限制,所以当出现偶然性的卡慢时,可以考虑对方的网络是否有特殊限制。
全文完。
如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。