一台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的默认栈大小

可以通过如下命令打印输出默认值的大小,命令:jinfo -flag ThreadStackSize ;例如

[root@host-192-168-202-229 ~]#jinfo -flag ThreadStackSize 1807-XX:ThreadStackSize=1024

线程数量=(机器本身可用内存-JVM分配的堆内存)/Xss的值,比如我们的容器本身大小是8G,堆大小是4096M,走-Xss默认值,可以得出 最大线程数量:4096个。

根据计算公式,得出如下结论:

结论1:jvm堆越大,系统创建的线程数量越小。

结论2:当-Xss的值越小,可生成线程数量越多。

我们知道操作系统分配给每个进程的内存大小是有限制的,比如32位的Windows是2G。因此操作系统对一个进程下的线程数量是有限制的,不能无限的增多。经验值:3000-5000左右(我没有验证)。

刚才说的是不考虑系统限制的情况,那如果考虑系统限制呢,主要跟以下几个参数有关系

/proc/sys/kernel/pid_max 增大,线程数量增大,pid_max有最高值,超过之后不再改变,而且32,64位也不一样

/proc/sys/kernel/thread-max 系统可以生成最大线程数量

max_user_process(ulimit -u)centos系统上才有,没有具体研究

/proc/sys/vm/max_map_count 增大,数量增多

线程是非常宝贵的资源,我们要严格控制线程的数量,象上面我们的截图情况,显然线程数量过多。这个是跟我们自己配置了fixed大小的线程池有关系。京东有自己的rpc框架jsf,里面可以针对每个服务端口设置线程大小。


原作者:新栋BOOK
原文链接:一台java服务器可以跑多少个线程?
原出处:简书

bigint最大有多少位_一台 Java 服务器可以跑多少个线程?相关推荐

  1. 能跑java的服务器_一台java服务器可以跑多少个线程?

    一台java服务器能跑多少个线程?这个问题来自一次线上报警如下图,超过了我们的配置阈值. 京东自研UMP监控分析 打出jstack文件,通过IBM Thread and Monitor Dump An ...

  2. java xss 默认值_一台 Java 服务器可以跑多少个线程?

    原标题:一台 Java 服务器可以跑多少个线程? 转自:简书,作者:新栋BOOK 一台Java服务器能跑多少个线程?这个问题来自一次线上报警如下图,超过了我们的配置阈值. 京东自研UMP监控分析 打出 ...

  3. 一台 Java 服务器可以跑多少个线程?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 转自:简书,作者:新栋BOOK www.jianshu.com/p ...

  4. 线上经验总结:一台 Java 服务器可以跑多少个线程?

    一台java服务器能跑多少个线程? 这个问题来自一次线上报警如下图,超过了我们的配置阈值. 京东自研UMP监控分析 打出jstack文件,通过IBM Thread and Monitor Dump A ...

  5. java线程服务器_一台Java服务器跑多少个线程

    一台Java服务器能跑多少个线程?这个问题来自一次线上报警如下图,超过了我们的配置阈值. 图:京东自研UMP监控分析 打出jstack文件,通过IBM Thread and Monitor Dump ...

  6. bigint最大有多少位_《追光吧哥哥》21位艺人靠实力成团?不见得,节目赛制本不公平...

    一直被说成是<浪姐>男版的<追光吧!哥哥>让人看到娱乐圈原来不只是女星到了一定年龄会影响其的事业,其实男星也不例外,看样子"当明星就是吃青春饭的"说法一点也 ...

  7. java 去重复值 按位_详解Java的按位操作符

    Java的位操作符用来操作整数基本数据类型中的单个"比特"(bit),即代进制位.而我们知道比特就是0和1,那么,位操作就是对这些数据进行基本的操作.如果基本类型是char.byt ...

  8. 一台服务器能承载多少用户_一台入门级服务器能为你的办公应用带来哪些效率?评测告诉你...

    数字化时代,对于企业级客户来说,不仅关注设备的智能化,更强调企业运营效率的提升. 大型企业在数字化转型中,他们的诉求最容易获得厂商的关注并得到符合自身需求的解决方案:对于中小企业来尤其是规模小的企业的 ...

  9. mysql两台服务器怎么做数据同步_两台mysql服务器实现双机互备配置并测试数据同步...

    对于实现两台机子的互备配置,本文作出了详细的介绍,之后的测试数据同步,在10.168.1.44服务器数据库里修改一条数据, 可以看到数据已经同步过来了.反过来,修改10.168.0.126的数据,也可 ...

最新文章

  1. linux内核远程漏洞,CVE-2019-11815:Linux内核竞争条件漏洞导致远程代码执行
  2. java代码(dex)注入
  3. python秒表游戏代码_用20行Python代码实现2048小游戏,你会吗?
  4. 良品铺子如何通过网站推广打造国内休闲食品连锁零售企业?
  5. 奇异值分解(SVD)相关知识
  6. 模板标签及模板的继承与引用
  7. P3971-[TJOI2014]Alice and Bob【贪心】
  8. js 将图片置灰_艾叶灰千万别扔——艾叶灰的神奇功效
  9. 如何控制事物_如何使用QC七大手法?62页QC老七大工具,果断收藏
  10. Bailian2912 三个完全平方数【进制+枚举】
  11. 谈谈MVC项目中的缓存功能设计的相关问题
  12. linux设备驱动归纳总结--转载小白的博客
  13. Largest Submatrix SPOJ - MINSUB (单调栈)
  14. 云服务下的安全特点及基础防护
  15. UG基本命令ug快捷键命令大全ug基本命令教程完整版
  16. java架构师主要是干什么的,要注意什么?
  17. 17 线性方程组——线性方程组解的结构、解的性质、解空间、基础解系、基础解系存在性
  18. 2007版本中国网络新秀之七剑下天山
  19. DSP TMS320C5509A 控制DDS AD9854芯片进行AM幅度调制时的噪声抑制
  20. 国家信息分类和编码标准

热门文章

  1. 使用纯粹的ABAP位操作实现两个整数相加
  2. SAP OData service的执行是如何从Gateway系统转交到backend系统
  3. SAP Fiori : Response from creating in local store
  4. SAP UI5 JavaScript文件的lazy load - 懒加载
  5. How to deal with error message Could not start the app due to a configuration problem
  6. UI5 EventBus
  7. 如何修改product base category
  8. CL_CRM_REPORT_ACCRULE_ONEORDER
  9. How is HashMap return type handled to be converted to a json string
  10. 为SAP UI5正名 - 它也支持双向绑定