
回复
1 前天大佬通过prometheus发现 tomcat http busy状态的线程这几天呈线性递增。每一天增加3个
$>$top -Hp 66182
$pidstat -u -p 66182 1 5
大部分的线程都正常,cpu利用率不高,而且线程ID变动快,基本排除 死循环、CPU 空转的问题
jstack -l 66182 > block66182.jstack
。因为知道是http 线程的问题。http 的开头一般都是 http-nio 。可以使用grep -A 15 'http-nio' block66182.jstack
输出一些关键信息。找了很久,多数http 都是正常状态。然后还找到了项目代码 updateXYDVerifiedCodeByDate 之类的。定位到具体,发现是一个定时任务future.get(15, TimeUnit.SECONDS);
。则每隔 15 秒报错一次。但是在promethues 监控到 verifiedCodeQueryExecutor 的线程队列是空的。4.1 promethues 监控到的线程队列数为空
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
文章转载自公众号:潜行前行