问题分析:首先查看cpu、io、jvm相关信息均正常。启动arthas,通过thread命令发现很多http请求都处于WAITING状态,这里就可以肯定应该服务卡死的原因就是这个。如下图
查看具体线程栈信息,如下
上图大概可以推测http处于WAITING是不是在等待获取HttpClient线程池里的线程(AbstractConnPool),找到熟悉的SeataFeignClient,怀疑会不会跟Seata有关系,打开源代码分析

一步步跟进去
大概明白了七八分,tomcat http线程都处WAITING状态就是在等待获取HttpClient里的线程资源,这时候就有疑问,线程池的资源为什么不释放,一方面流程确实很大,超过了线程池负载等待资源,结合系统的请求量,这方面不大可能,可以排除;另一个就是资源使用完没有回收,通过debug,找到系统一段封装代码如下

至此找出元凶。
总结:首先要能够从现象分析问题所在,像我们这就是服务运行一段时间接口就卡住不响应,服务器cpu、io、jvm等指标比较正常,通过Arthas查看线程栈信息,一步步分析,可以确定是在通过feign调用其他服务时出了问题,接着往下可以找个接口进行debug,先摸清feign调用的大体流程,一般像feign这样的组件比较成熟,不大可能会出问题,还是要往自身扩展封装的代码去找问题。