背景:
环境上有个接口压测吞读量一直上不去,该接口的逻辑大概是查询我方数据库2个表,然后调用外围2个接口
分析过程:
1.问题1(gap时间)
a. 查看调用链发现调用链存在大量gap时间,这种gap时间一般就是资源没了,比如等待获取连接池,或者gc回收等待,归根接底都是资源问题
b. 取堆栈日志,发现大量线程sleep在这边waiting on condition
c. 查看源码发现项目组使用的第三方jar包,有这样的代码,在http请求后,在finally里使用了sleep ,大致意思就是 如果调用花费200ms,就需要sleep800ms