一、背景
工作中遇到一个不常见的技术问题:从浏览器获取的前端静态资源(nginx服务器保存)很快,调用接口就会慢,在之前的文章中贴过用curl可以直接在服务器发送HTTP请求,达到模拟接口调用的效果,这次也是采用这种方法进行测试,在ng服务器上发送的curl请求确实响应慢,但是公司的项目网络环境复杂,中间有很多的安全设备和路由,需要精准定位问题。
二、技术方法
可以在curl前加上另一个Linux的强大命令 - strace查看结果,在实际使用中,strace显示【send to...】 - 【time out】*4 - 【received from...】中间的time out 是请求已经发送出,但是中间链路有某台设备故障,strace的队列默认超时时间是1s,1s内没有检查到结果就返回一个【time out】,这表示对方处理了4s才返回了结果,这对只负责应用层的程序员十分有帮助,可以清楚问题,让运维的小伙伴去定位啦。