一台Java服务器能跑多少个线程?这个问题来自一次线上报警如下图,超过了我们的配置阈值。

打出jstack文件,通过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个。

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

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

当-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,里面可以针对每个服务端口设置线程大小。

java一个进程可以村多少个线程_一台 Java 服务器可以跑多少个线程?相关推荐

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

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

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

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

  3. bigint最大有多少位_一台 Java 服务器可以跑多少个线程?

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

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

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

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

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

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

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

  7. java守护线程与用户线程_详解Java线程-守护线程与用户线程

    干java 开发这么多年, 之前一直没留意java 进程还区分守护进程和用户进程.守护进程这个概念最早还是在linux系统中接触的,直到近期使用java开发心跳检测功能时,使用Timer时才发现原来j ...

  8. 虚拟机实现java线程_深入理解java虚拟机(23):java与多线程

    线程有以下三种实现方式 1.使用内核线程方式实现,优点内核完成线程切换和操纵调度器进行调度,并且负责将线程任务映射到处理器上.程序一般不使用内核线程会使用一种轻量级进程,轻量级进程与内核线程一对一模型 ...

  9. java中什么是守护线程_什么是Java的守护线程?

    欢迎大家搜索"小猴子的技术笔记"关注我的公众号,有问题可以及时和我交流. 守护线程是一种支持性线程,主要用于后台调度以及支持性的工作.守护线程具备自动结束生命周期的特性,而非守护线 ...

  10. java 线程中创建线程_如何在Java 8中创建线程安全的ConcurrentHashSet?

    java 线程中创建线程 在JDK 8之前,还没有办法在Java中创建大型的线程安全的ConcurrentHashSet. java.util.concurrent包甚至没有一个名为Concurren ...

最新文章

  1. 使用Python批量删除windows下特定目录的N天前的旧文件实战:Windows下批量删除旧文件、清除缓存文件、解救C盘、拒绝C盘爆炸
  2. [转]阿里巴巴集团去IOE运动的思考与总结
  3. 利用matlab画混淆矩阵(confusion matrix)
  4. 蚂蚁从飞机上掉下来的数学建模分析
  5. [转] 程序员面试题精选100题(35)-找出两个链表的第一个公共结点
  6. Android 图形驱动初始化
  7. NET问答: 如何检查一个 string 是否为有效的 url 格式?
  8. 【nginx】【小记】泛解析大量域名的情况下 将不带www的域名,301到与之对应的www前缀的域名
  9. 1024,节日快乐!
  10. 撞击测试软件,碰撞检测用什么软件?你会用Navisworks做碰撞检测吗?
  11. 【转载】"library not found for - "解决办法
  12. version `GLIBC_2.14' not found 解决方法.
  13. IBM Think 2019核心议题:如何打造可信人工智能
  14. js需要删除页面中某个元素
  15. 数学建模 论文 各部分 写作指导 及 获奖技巧讲解【美赛MCM/ICM】
  16. 光辉岁月-Beyond
  17. 常见的web攻击手段
  18. android Manifest介绍
  19. 分享WIN7输入法图标不显示的几种解决方法
  20. 实现童年宝可梦,教你用Python画一只属于自己的皮卡丘

热门文章

  1. 分布式系统关注点——99%的人都能看懂的「熔断」以及最佳实践
  2. HDU TIANKENG’s rice shop(模拟)
  3. Java设计模式——建造者模式
  4. 小记-一些问题的解决方法
  5. VC++使用CImage在内存中Bmp转换Jpeg图片
  6. sysbench 0.5 oltp测试笔记
  7. smtp、esmtp、pop3命令使用
  8. 用小学的试题测试你,换个脑袋吧~~~
  9. 6sp电池测试软件,上手6SP大容量电池,3550mAh(深度测试篇)
  10. mysql 修改字段为主键自增_给MySQL中某表增加一个新字段,设为主键值为自动增长。...