Springboot tomcat.threads线程数学习
Springboot tomcat.threads线程数学习
摘要
压测完nginx 突然想搞一下springboot内嵌的tomcat的 threads的参数
一不做二不休, 直接就着脚本进行学习和验证
修改参数
产品里面默认参数值是 500 我这边改大一下
tomcat
threads:
max: 2000
accept-count: 10000
max-connections: 200000
connection-timeout: 600000
修改完后进行压测
ab -c 5000 -n 50000 -k https://127.0.0.1:5401/index.html
ab -c 1000 -n 50000 -k https://127.0.0.1:5401/index.html
简单结论
##注意不同测试测试, 结果不尽相同, 主要是看趋势##
##本次测试取第二次预热之后的##
threads 为 500 时 1000并发
https 的吞吐量TPS为:10260
第一次:4418.62
第二次:10260.98
threads 为 500 时 5000并发
https 的吞吐量TPS为:8701
第一次:3779.16
第二次:8701.95
threads 为 2000 时 1000并发
https 的吞吐量TPS为:11534
第一次:4982.65
第二次:11534.35
threads 为 2000 时 5000并发
https 的吞吐量TPS为:8267
第一次:3573.94
第二次:8267.08
threads为500时 1000并发比5000并发性能要好.
threads为2000时 1000并发比5000并发性能要好
1000并发时: threads2000比threads500性能要好.
5000并发时: threads500比threads2000性能要好.
感觉高并发下面. 500和2000的差异性不是很大,不会超过10%.
但是需要说明一下. threads2000时 会多占用2G的内存. 用来存放堆栈信息
对机器的压力会比较大一些. 进行容器或者是其他处理时需要关注一下这一块的内存设置.
经过预热和为经过预热性能差距是一倍多. 建议现场有机会还是需要预热在上线.
或者是先小流量引入,再大流量进行使用. 保证TPS稳定.
服务启动成功之前查看
- Java Heap (reserved=24014MB, committed=5034MB)
(mmap: reserved=24014MB, committed=5034MB)
- Class (reserved=1151MB, committed=142MB)
(classes #23154)
(malloc=17MB #35188)
(mmap: reserved=1134MB, committed=125MB)
- Thread (reserved=137MB, committed=137MB)
(thread #137)
(stack: reserved=136MB, committed=136MB)
- Code (reserved=253MB, committed=55MB)
(malloc=9MB #11867)
(mmap: reserved=244MB, committed=46MB)
- GC (reserved=893MB, committed=829MB)
(malloc=16MB #477)
(mmap: reserved=877MB, committed=813MB)
服务启动成功后的部分信息
- Java Heap (reserved=24014MB, committed=11150MB)
(mmap: reserved=24014MB, committed=11150MB)
- Class (reserved=1355MB, committed=374MB)
(classes #60146)
(malloc=23MB #110948)
(mmap: reserved=1332MB, committed=351MB)
- Thread (reserved=389MB, committed=389MB)
(thread #388)
(stack: reserved=387MB, committed=387MB)
(malloc=1MB #1950)
(arena=1MB #762)
- Code (reserved=266MB, committed=130MB)
(malloc=22MB #30252)
(mmap: reserved=244MB, committed=108MB)
- GC (reserved=893MB, committed=843MB)
(malloc=16MB #1898)
(mmap: reserved=877MB, committed=827MB)
压测后的数据
- Java Heap (reserved=24014MB, committed=11150MB)
(mmap: reserved=24014MB, committed=11150MB)
- Class (reserved=1359MB, committed=378MB)
(classes #60595)
(malloc=23MB #115122)
(mmap: reserved=1336MB, committed=355MB)
- Thread (reserved=2387MB, committed=2387MB)
(thread #2377)
(stack: reserved=2376MB, committed=2376MB)
(malloc=8MB #11895)
(arena=3MB #4740)
- Code (reserved=267MB, committed=139MB)
(malloc=24MB #32028)
(mmap: reserved=244MB, committed=115MB)
- GC (reserved=893MB, committed=843MB)
(malloc=16MB #2029)
(mmap: reserved=877MB, committed=827MB)
threads 500 时的情况-启动成功之前
- Java Heap (reserved=24014MB, committed=5481MB)
(mmap: reserved=24014MB, committed=5481MB)
- Class (reserved=1167MB, committed=160MB)
(classes #25730)
(malloc=17MB #40906)
(mmap: reserved=1150MB, committed=143MB)
- Thread (reserved=156MB, committed=156MB)
(thread #156)
(stack: reserved=155MB, committed=155MB)
- Code (reserved=254MB, committed=63MB)
(malloc=11MB #13516)
(mmap: reserved=244MB, committed=53MB)
- GC (reserved=893MB, committed=830MB)
(malloc=16MB #572)
(mmap: reserved=877MB, committed=814MB)
threads 500 时的情况-启动成功
- Java Heap (reserved=24014MB, committed=9355MB)
(mmap: reserved=24014MB, committed=9355MB)
- Class (reserved=1290MB, committed=299MB)
(classes #44502)
(malloc=20MB #82414)
(mmap: reserved=1270MB, committed=279MB)
- Thread (reserved=273MB, committed=273MB)
(thread #273)
(stack: reserved=272MB, committed=272MB)
(malloc=1MB #1375)
- Code (reserved=259MB, committed=93MB)
(malloc=16MB #21262)
(mmap: reserved=244MB, committed=77MB)
- GC (reserved=893MB, committed=839MB)
(malloc=16MB #1265)
(mmap: reserved=877MB, committed=824MB)
threads 500 时的情况-压测时
- Java Heap (reserved=24014MB, committed=11122MB)
(mmap: reserved=24014MB, committed=11122MB)
- Class (reserved=1353MB, committed=370MB)
(classes #58279)
(malloc=23MB #112171)
(mmap: reserved=1330MB, committed=347MB)
- Thread (reserved=846MB, committed=846MB)
(thread #843)
(stack: reserved=842MB, committed=842MB)
(malloc=3MB #4225)
(arena=2MB #1672)
- Code (reserved=267MB, committed=137MB)
(malloc=23MB #31921)
(mmap: reserved=244MB, committed=113MB)
Springboot tomcat.threads线程数学习的更多相关文章
- tomcat最大线程数的设置(转)
1.Tomcat的server.xml中连接器设置如下 <Connector port="8080" maxThreads="150" minSpareT ...
- tomcat最大线程数的设置
Tomcat的server.xml中连接器设置如下 <Connector port="8080" maxThreads="150" minSpareThr ...
- Tomcat最佳线程数
什么是最佳线程数? 为满足更多用户访问需求,可以调整Tomcat线程数,但是不能太大,否则导致线程切换开销,随着用户递增(线程数也随之调整),系统QPS逐渐增加,当用户量达到某个值,QPS并不会增加, ...
- tomcat查看线程数
获取tomcat进程pid ps -ef|grep tomcat 统计该tomcat进程内的线程个数 ps -Lf 29295 |wc -l
- 聊下并发和Tomcat线程数(错误更正)
本文前半部分结论存在严重错误,请看最后2015-1-20更新部分. 最近一直在解决线上一个问题,表现是: Tomcat每到凌晨会有一个高峰,峰值的并发达到了3000以上,最后的结果是Tomcat线程池 ...
- 聊下并发和Tomcat线程数(Updated)
最近一直在解决线上一个问题,表现是: Tomcat每到凌晨会有一个高峰,峰值的并发达到了3000以上,最后的结果是Tomcat线程池满了,日志看很多请求超过了1s. 服务器性能很好,Tomcat版本是 ...
- 浅谈并发和tomcat线程数
假设Tomcat每到固定一个时间会有一个高峰,峰值的并发达到了3000以上,最后的结果是Tomcat线程池满了,日志看很多请求超过了1s. 服务器性能很好,Tomcat版本是7.0.54,配置如下 & ...
- 并发和Tomcat线程数
转自 http://zhanjindong.com 最近一直在解决线上一个问题,表现是: Tomcat每到凌晨会有一个高峰,峰值的并发达到了3000以上,最后的结果是Tomcat线程池满了,日志看很多 ...
- tomcat 线程数与 mysql 连接数综合调优
目前线上系统包含 数据收集+数据分析+中心服务,三个均为 tomcat,共用一个mysql服务. 由于tomcat最大线程数200 *3 =600,最大并发时,会有600个jdbc连接.当然这是极端情 ...
- Tomcat参数调优包括日志、线程数、内存【转】
[Tomcat中日志打印对性能测试的影响] 一般都提供了这样5个日志级别: ▪ Debug ▪ Info ▪ Warn ▪ Error ▪ Fatal 由于性能测试需要并发进行压力测试,如果日志级别是 ...
随机推荐
- 技术实操丨SoundNet迁移学习之由声音分类到语音情感识别
摘要:声音也是识别对象的一种重要数据源.其中根据声音来识别声音所处的环境也是语音识别的研究内容之一. 一.思路 1.SoundNet模型在视频数据中先预训练,视频任务可能是场景识别,可参考这篇文章So ...
- 微服务下,使用 ELK 进行日志采集以及统一处理
摘要:微服务各个组件的相关实践会涉及到工具,本文将会介绍微服务日常开发的一些利器,这些工具帮助我们构建更加健壮的微服务系统,并帮助排查解决微服务系统中的问题与性能瓶颈等. 微服务各个组件的相关实践会涉 ...
- 详解openGauss多线程架构启动过程
摘要:本文介绍openGauss数据库的启动过程,包括主线程,辅助线程及业务处理线程的启动过程. 本文分享自华为云社区<openGauss内核分析(一):openGauss 多线程架构启动过程详 ...
- 一文讲述数仓组件SysCache
摘要:SysCache是ThreadLocal结构,每个线程都具有各自的SysCache,其中存储的缓存信息由执行的业务决定. 本文分享自华为云社区<GaussDB(DWS)CBB组件之SysC ...
- 聊聊Hive数据血缘——从Atlas没有列级血缘的Bug讲起
前几天,Datahub提供了最新的字段级别数据血缘功能,很多朋友迫不及待想对比一下Datahub的字段级血缘与Atlas的区别. 这个时候问题来了,在Atlas收集Hive血缘的时候,由于部分版本问题 ...
- iOS加固保护新思路
技术简介 前言 iOS加固保护是基于虚机源码保护技术,针对iOS平台推出的下一代加固产品.可以对iOS APP中的可执行文件进行深度混淆.加固,并使用独创的虚拟机技术对代 码进行加密保护,使用任何 ...
- 实用指南:手把手搭建坚若磐石的DevSecOps框架
长期以来,安全问题一直被当作软件开发流程中的最后一步.开发者贡献可以实现软件特性的代码,但只在开发生命周期的测试和部署阶段考虑安全问题.随着盗版.恶意软件及网络犯罪事件飙升,开发流程需要做出改变. 开 ...
- 2014年第五届蓝桥杯【C++省赛B组】
第一题:啤酒和饮料 啤酒每罐2.3元,饮料每罐1.9元.小明买了若干啤酒和饮料,一共花了82.3元. 我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒. 注意:答案是一个整数.请通过浏览器提 ...
- 1688 复杂业务场景下的 Serverless 提效实践
1688 复杂业务场景下的 Serverless 提效实践 作者 | 远岩(阿里巴巴 CBU 技术部 Serverless & 工程效能负责人) 前言 首先为大家简单介绍一下我们的业务场景,1 ...
- java调用百度地图接口输入名称查经度纬度
如何注册ak号请参考https://blog.csdn.net/weixin_42512684/article/details/115843299 package manager.tool; impo ...