一台Java服务器能跑多少个线程?这个问题来自一次线上报警如下图,超过了我们的配置阈值。
京东自研UMP监控分析
打出jstack文件,通过IBM Thread and Monitor Dump Analyzer for Java工具查看如下:
IBM Thread and Monitor Dump Analyzer for Java
共计1661个线程,和监控数据得出的吻合。但这个数量应该是大了,我们都知道线程多了,就会有线程切换,带来性能开销。
当时就想到一台java服务器到底可以跑多少个线程呢?跟什么有关系?现整理如下。
每个线程都有一个线程栈空间通过-Xss设置,查了一下我们服务器的关于jvm内存的配置
-Xms4096m
-Xmx4096m
-XX:MaxPermSize=1024m
只有这三个,并没有-Xss 和-XX:ThreadStackSize的配置,因此是走的默认值。几种JVM的默认栈大小