Tomcat进程的详细过程

程序模拟CPU使用率过高 - 在线程池中创建4096个线程

在Linux环境下启动程序:
java -Xss256k -jar demo-0.0.1-SNAPSHOT.jar
线程栈大小指定为256KB。对于测试程序来说,操作系统默认值8192KB过大,因为需要创建4096个线程。

使用top命令,星池科技 我们看到Java进程的CPU使用率达到了961.6%,注意到进程ID是55790。

经历上述过程,往往已经可以定位到大量消耗CPU的线程及bug代码,比如死循环。但对于该案例:Java进程占用的CPU是961.6%, 而“scheduling-1”线程只占用了42.5%的CPU,那其它CPU被谁占用了?

第4步用top -H -p pid命令看到的线程列表中还有许多名为“pool-1-thread-x”的线程,它们单个的CPU使用率不高,但是似乎数量比较多。你可能已经猜到,这些就是线程池中干活的线程。那剩下的CPU是不是被这些线程消耗了呢?https://www.starpool.cn

还需要看jstack的输出结果,主要是看这些线程池中的线程是不是真的在干活,还是在“休息”呢?

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务