惠州seo网站管理,网页设计与制作期末作业源代码,建筑设计图纸平面图,陕建上海公司官网原标题#xff1a;一台 Java 服务器可以跑多少个线程#xff1f;转自#xff1a;简书#xff0c;作者#xff1a;新栋BOOK一台Java服务器能跑多少个线程#xff1f;这个问题来自一次线上报警如下图#xff0c;超过了我们的配置阈值。京东自研UMP监控分析打出jstack文件一台 Java 服务器可以跑多少个线程转自简书作者新栋BOOK一台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:MaxPermSize1024m只有这三个并没有-Xss 和-XX:ThreadStackSize的配置因此是走的默认值。几种JVM的默认栈大小可以通过如下命令打印输出默认值的大小命令jinfo -flag ThreadStackSize例如[roothost-192-168-202-229 ~]#jinfo -flag ThreadStackSize 1807-XX:ThreadStackSize1024不考虑系统限制可以通过如下公式计算得出最大线程数量线程数量(机器本身可用内存-JVM分配的堆内存)/Xss的值比如我们的容器本身大小是8G,堆大小是4096M,走-Xss默认值可以得出 最大线程数量4096个。根据计算公式得出如下结论jvm堆越大系统创建的线程数量越小。当-Xss的值越小可生成线程数量越多。刚才说的是不考虑系统限制的情况那如果考虑系统限制呢主要跟以下几个参数有关系/proc/sys/kernel/pid_max 增大线程数量增大pid_max有最高值超过之后不再改变而且3264位也不一样/proc/sys/kernel/thread-max 系统可以生成最大线程数量max_user_process(ulimit -u)centos系统上才有没有具体研究/proc/sys/vm/max_map_count 增大数量增多线程是非常宝贵的资源我们要严格控制线程的数量象上面我们的截图情况显然线程数量过多。这个是跟我们自己配置了fixed大小的线程池有关系。京东有自己的rpc框架jsf里面可以针对每个服务端口设置线程大小。参考资料最近面试BAT整理一份面试资料《 大厂Java面试通关指北》覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。获取方式点“在看”关注公众号并回复BAT领取更多内容陆续奉上。返回搜狐查看更多责任编辑