java一个进程可以村多少个线程_一台 Java 服务器可以跑多少个线程?
一台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 服务器可以跑多少个线程?相关推荐
- 一台 Java 服务器可以跑多少个线程?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 转自:简书,作者:新栋BOOK www.jianshu.com/p ...
- 线上经验总结:一台 Java 服务器可以跑多少个线程?
一台java服务器能跑多少个线程? 这个问题来自一次线上报警如下图,超过了我们的配置阈值. 京东自研UMP监控分析 打出jstack文件,通过IBM Thread and Monitor Dump A ...
- bigint最大有多少位_一台 Java 服务器可以跑多少个线程?
一台Java服务器能跑多少个线程?这个问题来自一次线上报警如下图,超过了我们的配置阈值. 京东自研UMP监控分析 打出jstack文件,通过IBM Thread and Monitor Dump An ...
- 能跑java的服务器_一台java服务器可以跑多少个线程?
一台java服务器能跑多少个线程?这个问题来自一次线上报警如下图,超过了我们的配置阈值. 京东自研UMP监控分析 打出jstack文件,通过IBM Thread and Monitor Dump An ...
- java线程服务器_一台Java服务器跑多少个线程
一台Java服务器能跑多少个线程?这个问题来自一次线上报警如下图,超过了我们的配置阈值. 图:京东自研UMP监控分析 打出jstack文件,通过IBM Thread and Monitor Dump ...
- java xss 默认值_一台 Java 服务器可以跑多少个线程?
原标题:一台 Java 服务器可以跑多少个线程? 转自:简书,作者:新栋BOOK 一台Java服务器能跑多少个线程?这个问题来自一次线上报警如下图,超过了我们的配置阈值. 京东自研UMP监控分析 打出 ...
- java守护线程与用户线程_详解Java线程-守护线程与用户线程
干java 开发这么多年, 之前一直没留意java 进程还区分守护进程和用户进程.守护进程这个概念最早还是在linux系统中接触的,直到近期使用java开发心跳检测功能时,使用Timer时才发现原来j ...
- 虚拟机实现java线程_深入理解java虚拟机(23):java与多线程
线程有以下三种实现方式 1.使用内核线程方式实现,优点内核完成线程切换和操纵调度器进行调度,并且负责将线程任务映射到处理器上.程序一般不使用内核线程会使用一种轻量级进程,轻量级进程与内核线程一对一模型 ...
- java中什么是守护线程_什么是Java的守护线程?
欢迎大家搜索"小猴子的技术笔记"关注我的公众号,有问题可以及时和我交流. 守护线程是一种支持性线程,主要用于后台调度以及支持性的工作.守护线程具备自动结束生命周期的特性,而非守护线 ...
- java 线程中创建线程_如何在Java 8中创建线程安全的ConcurrentHashSet?
java 线程中创建线程 在JDK 8之前,还没有办法在Java中创建大型的线程安全的ConcurrentHashSet. java.util.concurrent包甚至没有一个名为Concurren ...
最新文章
- 使用Python批量删除windows下特定目录的N天前的旧文件实战:Windows下批量删除旧文件、清除缓存文件、解救C盘、拒绝C盘爆炸
- [转]阿里巴巴集团去IOE运动的思考与总结
- 利用matlab画混淆矩阵(confusion matrix)
- 蚂蚁从飞机上掉下来的数学建模分析
- [转] 程序员面试题精选100题(35)-找出两个链表的第一个公共结点
- Android 图形驱动初始化
- NET问答: 如何检查一个 string 是否为有效的 url 格式?
- 【nginx】【小记】泛解析大量域名的情况下 将不带www的域名,301到与之对应的www前缀的域名
- 1024,节日快乐!
- 撞击测试软件,碰撞检测用什么软件?你会用Navisworks做碰撞检测吗?
- 【转载】"library not found for - "解决办法
- version `GLIBC_2.14' not found 解决方法.
- IBM Think 2019核心议题:如何打造可信人工智能
- js需要删除页面中某个元素
- 数学建模 论文 各部分 写作指导 及 获奖技巧讲解【美赛MCM/ICM】
- 光辉岁月-Beyond
- 常见的web攻击手段
- android Manifest介绍
- 分享WIN7输入法图标不显示的几种解决方法
- 实现童年宝可梦,教你用Python画一只属于自己的皮卡丘
热门文章
- 分布式系统关注点——99%的人都能看懂的「熔断」以及最佳实践
- HDU TIANKENG’s rice shop(模拟)
- Java设计模式——建造者模式
- 小记-一些问题的解决方法
- VC++使用CImage在内存中Bmp转换Jpeg图片
- sysbench 0.5 oltp测试笔记
- smtp、esmtp、pop3命令使用
- 用小学的试题测试你,换个脑袋吧~~~
- 6sp电池测试软件,上手6SP大容量电池,3550mAh(深度测试篇)
- mysql 修改字段为主键自增_给MySQL中某表增加一个新字段,设为主键值为自动增长。...