记一次jstack线程诊断
问题
dubbo请求服务,服务提供者 打印日志 显示请求任务队列堆积过长,线程池活动线程过大。,增加线程池线程核心数以及队列大小 依然没用。直接跑到核心线程数的最大值
排查
1.使用top 命令查看Cpu 发现 cpu 188% 内存。超过一倍
2.定位线程问题 top -Hp pid 查看线程使用情况 发现线程数超标 并且每个线程所占cpu相同 ,内存也相同 ,怀疑某段代码一直在循环,
3.使用 jstack pid 命令发现 所有任务线程 都一直在执行统一行代码,找到源码,发现确实是一个循环,因为数据库条件不满足一直做循环处理,
处理
修改代码逻辑,防止无限循环出现