加载中…
个人资料
iPan
iPan
  • 博客等级:
  • 博客积分:0
  • 博客访问:2,639
  • 关注人气:234
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

JFinal的undertow工作线程数配置

(2023-08-30 10:52:48)
标签:

undertow

jfinal

线程

分类: J2EE笔记
1 工作线程数
JFinal对工作线程数做了一层包装,通过UndertowConfig来配置,配置会覆盖到原生Undertow的Builder里面;
1)优先取配置文件;
2)开发环境,受限制,workerThreads=4;ioThreads=2;
3)生产环境,ioThreads=Math.round(cpuNum * 1.6180339);workerThreads=ioThreads * 16;

# 注意
# 是否开发模式:true 值支持热加载,生产环境建议配置成 false(会影响工作线程数)
undertow.devMode=true

2 bufferSize配置按默认就行
// 官方Undertow.java计算如下
private Builder() {
ioThreads = Math.max(Runtime.getRuntime().availableProcessors(), 2); // 2~CPU核心数
workerThreads = ioThreads * 8; // 工作线程是ioThreads的8倍
long maxMemory = Runtime.getRuntime().maxMemory();
//smaller than 64mb of ram we use 512b buffers
if (maxMemory < 64 * 1024 * 1024) { // 内存<64M
//use 512b buffers
directBuffers = false;
bufferSize = 512;
} else if (maxMemory < 128 * 1024 * 1024) { // // 内存<128M
//use 1k buffers
directBuffers = true;
bufferSize = 1024;
} else { // 内存>128M
//use 16k buffers for best performance
//as 16k is generally the max amount of data that can be sent in a single write() call
directBuffers = true;
bufferSize = 1024 * 16 - 20; //the 20 is to allow some space for protocol headers, see UNDERTOW-1209
}

}

3 小结
一般来说,ioThreads、workerThreads是不用设置的,按照默认就行了;
增加线程数,系统通道吞吐量就一定能上去吗?不是的,CPU处理有极限,线程数量上去,CPU不一定处理的了;从网上资料看,对Tomcat压测结果显示200个线程跟5000个线程执行的结果是差不多的;所以,吞吐量更多的是跟后端业务处理时长有关系;

0

阅读 收藏 喜欢 打印举报/Report
前一篇:mysqlbinlog
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有