场景:
线上一个功能打开日志显示如下,ClientAbortException客户端中止异常,此功能在公司测试环境正常,另外线上的服务都是docker部署的,使用的是动态数据源,微服务库用的mysql库,业务库用的postgreSql库。
Finished to call API:/process/getTaskAndFileBag/cf192870-e1a1-11ed-891a-5a5fd865df76/zb
Elapsed time : 68596 ms
org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:341)
排查工具:
arthas
现象分析:
发现日志接口响应时间约69s了,而网关gateway中设置的响应时间为60s,超时所以客户端断开了,按理讲此时只要修改gateway客户端响应时间就可了,但是一个简单的接口怎么如此耗时呢?
用arthas追踪了一下接口,发现两个问题。
第一:
用arthas的trace命令显示如下,在对象实例化的时候非常耗时。