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

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

f1930596947d

京东自研UMP监控分析

打出jstack文件,通过IBM Thread and Monitor Dump Analyzer for Java工具查看如下:

f1930596947d

IBM Thread and Monitor Dump Analyzer for Java

共计1661个线程,和监控数据得出的吻合。但这个数量应该是大了,我们都知道线程多了,就会有线程切换,带来性能开销。

当时就想到一台java服务器到底可以跑多少个线程呢?跟什么有关系?现整理如下。

每个线程都有一个线程栈空间通过-Xss设置,查了一下我们服务器的关于jvm内存的配置

-Xms4096m

-Xmx4096m

-XX:MaxPermSize=1024m

只有这三个,并没有-Xss 和-XX:ThreadStackSize的配置,因此是走的默认值。几种JVM的默认栈大小

f1930596947d

可以通过如下命令打印输出默认值的大小,命令: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,里面可以针对每个服务端口设置线程大小。转载请标明出处,并附上原文链接。遵守行业道德。

喜欢的最好方式是点击 关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

希尔排序基础java代码_java 算法之希尔排序详解及实现代码

摘要:这篇Java开发技术栏目下的“java 算法之希尔排序详解及实现代码”,介绍的技术点是“希尔排序详解、实现代码、希尔排序、Java、实现、代码”,希望对大家开发技术学习和问题解决有帮助。java 算法之希尔排序一、思想希尔排序:…

java设置属性的取值范围是多少_jvm-Java系统属性的范围

系统属性的范围至少从阅读Properties方法的API规范后,我无法获得关于是否由JVM的所有实例共享系统属性的答案。为了找出答案,我编写了两个快速程序,这些程序将使用相同的键但不同的值通过Properties设置系统属性:class T1 {public…

centos卸载内核_CentOS 中内核模块的加载和卸载

Linux操作系统的核心具有模块化的特性,在编译核心时,我们可以将系统功能编译成一个个单独的模块,待需要时再分别载入。lsmodlsmod命令用于显示已经加载到内核中的模块的状态信息。执行lsmod命令后会列出所有已载入系统的模块。insmodinsmod命…

java如何使用配置文件_如何使用java.util.Properties读取配置文件?

当我们有一个使用文本文件存储配置的应用程序且该配置通常为keyvalue格式时,我们可以java.util.Properties用来读取该配置文件。这是一个名为的配置文件示例app.config:app.nameProperties Sample Codeapp.version1.0下面的代码向您展示了如何读取配置。…

php取json子对象属性,php中输出json对象的值(实现方法)

实例如下所示:$json {"report":{"date":"2012-04-10","content":"abcdefght"}};$arr (array) json_decode($json,true);echo 当前日期是:. $arr[report][date];echo "";echo ;print_r($a…

zend optimizer php5.5,PHP_PHP5.3以上版本安装ZendOptimizer扩展,现在很多PHP程序都需要ZendOptimi - phpStudy...

PHP5.3以上版本安装ZendOptimizer扩展现在很多PHP程序都需要ZendOptimizer环境,但是ZendOptimizer在PHP5.2之后已经被支持,那怎么办,Zend也不会这么做,原来PHP5.3开始ZendOptimizer正式改为Zend Guard Loader。Zend Guard Loader的…

php导出excel出现乱码,php导出数据到excel出现乱码的解决办法

代码如下: 代码示例:/*** 导出数据到excel 解决乱码问题* Edit www.#*/function xlsBOF() {echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);return;}function xlsEOF() {echo pack("ss", 0x0A, 0x00);return;}function xlsWriteNumber(…

php mysql 表关联,mysql的多表关联_MySQL

bitsCN.commysql的多表关联数据库中经常要用到多个表的关联。mysql的关联主要包括inner join,left join,right join三种,下面分别加以介绍,并举例说明。顾名思义,inner join集合了两个表的信息,只有都包含的…

ulink php,【转载】15款USB数字界面横向评测(对比顶级CD转盘)!多看点!

还有一则有趣的回帖,一位纽约的烧友认为作者没有尝试何庆华最新的数字界面非常可惜,他认为何先生自主开发的DI-V3电源套件非常之牛,甚至超过了AP1PP的水准(不少人认为这个组合有一点点过于分析,不如何先生的作品水润)。他认为以他…

php取掉字符串第一位支付,php怎样去掉字符串中的第一个字符

php去掉字符串中的第一个字符的方法:可以利用substr()函数来实现。substr()函数可以返回字符串的提取部分,如果失败则返回false,或者返回一个空字符串。substr() 函数返回字符串的提取部分,如果失败则返回 FALSE,或者返…

php自动运维,运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(五)

include("conn.php");include("head.php");include("province.php");?>应用服务编号省份被监控服务器IP监控服务器监控服务当前状态监控时间$SQL"SELECT * FROM gansu_service order by date desc limit 0,13";$querymysql_query(…

matlab lpfilter.m,histroi/statmoments/lpfilter/dftuv的Matlab程序

(摘自冈萨雷斯的《数字图像处理(使用Matlab)》):l function [P,npix]histroi(f,c,r)% HISTROI Computes the histogram of an ROIin an image.% [P,npix]histroi(f,c,r) computes thehistogram,P,of a% polygonal region of interest (ROI) inimage F.The polygonal…

matlab求距离判别函数,求MATLAB的逐步判别程序 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...

somomo91你不觉得信息量太少了么?摸不着头脑,zhouxiaobo是啊,信息量太少,LZ能详细描述一下你的问题吗或者直接给出你的数据和要求2012jxyl引用回帖:zhouxiaobo at 2013-06-06 09:44:49是啊,信息量太少,LZ能…

php验证码背景图是数字,ThinkPHP5.0.20验证码背景图片

tp5配置验证码相关问题一、验证码背景图片及tp中文验证码5.0.1及以上支持者在应用配置目录(application)下面 extra 子目录内配置captcha.php文件;配置参数如下:2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY,// 验证码字体大小(px)fontSize &g…

php mongo 游标超时,游标在MongoDb游标上超时错误

我刚开始使用mongoDb作为PHP的后端.我只是使用find()查询来满足我的一个需求.我只想要前100个结果,但也想获得总体可用结果.我正在尝试这个.$cursor $this->dbReference->dbName->find($query);if($count ! 0){$cursor->skip($startIndex);$cursor->limit($cou…

matlab二项式拟合,数据回归分析和拟合的Matlab实现

复制代码多元二项式回归1.1、多元二项式回归Matlab命令rstool(x,y,model,alpha)输入参数说明:x:n*m矩阵;Y:n维列向量;alpha:显著性水平(缺省时为0.05);mode:由下列4个模型中选择1个(…

c mysql安装教程,Mysql安装教程_完成版(吐血式安装)

每次在不同操作系统中安装oracle和mysql这些常规数据库,步骤就那么点儿,但是遇见的错误却是千差万别。。记一次耗时两天的mysql数据库安装新得,有耐心,有毅力,憋生气。1.官网上下载免安装的版本(也就是下载下来直接解压…

查询oracle表上重复的数据库,如何确定Oracle数据库表重复的记录

正在看的ORACLE教程是:如何确定Oracle数据库表重复的记录。 作为一个Oracle数据库开发者或者DBA,在实际工作中经常会遇到这样的问题:试图对库表中的某一列或几列创建唯一索引时,系统提示ORA-01452:不能创建唯一索引,发…

oracle替代变量输出,【Oracle】替代变量

1.替代变量通常而言,替代变量的前缀是&或者&&区别:& 用来创建一个临时变量,每当遇到这个临时变量时,都会提示你输入一个值&&用来创建一个持久变量,当用&&命令引用这个变量时&#xff…

oracle 常用故障,Oracle常见问题解决方案汇总

1、Oracle 11g ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务数据库服务器崩了,而且尝试重启服务和重启机器都解决不了问题打开cmd窗口C:\Users\hxt>sqlplus / as sysdbaSQL*Plus: Release 11.2.0.1.0 Production on 星期三 12月 5 11:39:54 2018Co…