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线程数学习的更多相关文章

  1. tomcat最大线程数的设置(转)

    1.Tomcat的server.xml中连接器设置如下 <Connector port="8080" maxThreads="150" minSpareT ...

  2. tomcat最大线程数的设置

    Tomcat的server.xml中连接器设置如下 <Connector port="8080" maxThreads="150" minSpareThr ...

  3. Tomcat最佳线程数

    什么是最佳线程数? 为满足更多用户访问需求,可以调整Tomcat线程数,但是不能太大,否则导致线程切换开销,随着用户递增(线程数也随之调整),系统QPS逐渐增加,当用户量达到某个值,QPS并不会增加, ...

  4. tomcat查看线程数

    获取tomcat进程pid ps -ef|grep tomcat 统计该tomcat进程内的线程个数 ps -Lf 29295 |wc -l

  5. 聊下并发和Tomcat线程数(错误更正)

    本文前半部分结论存在严重错误,请看最后2015-1-20更新部分. 最近一直在解决线上一个问题,表现是: Tomcat每到凌晨会有一个高峰,峰值的并发达到了3000以上,最后的结果是Tomcat线程池 ...

  6. 聊下并发和Tomcat线程数(Updated)

    最近一直在解决线上一个问题,表现是: Tomcat每到凌晨会有一个高峰,峰值的并发达到了3000以上,最后的结果是Tomcat线程池满了,日志看很多请求超过了1s. 服务器性能很好,Tomcat版本是 ...

  7. 浅谈并发和tomcat线程数

    假设Tomcat每到固定一个时间会有一个高峰,峰值的并发达到了3000以上,最后的结果是Tomcat线程池满了,日志看很多请求超过了1s. 服务器性能很好,Tomcat版本是7.0.54,配置如下 & ...

  8. 并发和Tomcat线程数

    转自 http://zhanjindong.com 最近一直在解决线上一个问题,表现是: Tomcat每到凌晨会有一个高峰,峰值的并发达到了3000以上,最后的结果是Tomcat线程池满了,日志看很多 ...

  9. tomcat 线程数与 mysql 连接数综合调优

    目前线上系统包含 数据收集+数据分析+中心服务,三个均为 tomcat,共用一个mysql服务. 由于tomcat最大线程数200 *3 =600,最大并发时,会有600个jdbc连接.当然这是极端情 ...

  10. Tomcat参数调优包括日志、线程数、内存【转】

    [Tomcat中日志打印对性能测试的影响] 一般都提供了这样5个日志级别: ▪ Debug ▪ Info ▪ Warn ▪ Error ▪ Fatal 由于性能测试需要并发进行压力测试,如果日志级别是 ...

随机推荐

  1. 避坑指南:关于SPDK问题分析过程

    [前言] 这是一次充满曲折与反转的问题分析,资料很少,代码很多,经验很少,概念很多,当内核态,用户态,DIF,LBA,大页内存,SGL,RDMA,NVME和SSD一起迎面而来的时候,问题是单点的意外, ...

  2. 云图说丨云数据库GaussDB(for MySQL)事务拆分大揭秘

    摘要:数据库代理提供事务拆分的功能,能够将事务内写操作之前的读请求转发到只读节点,降低主节点负载. 本文分享自华为云社区<[云图说]第270期 云数据库GaussDB(for MySQL)事务拆 ...

  3. 带你读AI论文:SDMG-R结构化提取—无限版式小票场景应用

    摘要:在文档图像中提取关键信息在自动化办公应用中至关重要.传统基于模板匹配或者规则的方法,在通用性方面.未见过版式模板数据方面,效果都不好:为此,本文提出了一种端到端的空间多模态图推理模型(SDMG- ...

  4. 云图说:云数据库 RDS for MySQL一键开通读写分离,轻松应对业务高峰期

    摘要:华为云数据库 RDS for MySQL提供一键开通读写分离功能,只需要一个连接地址,让您在业务高峰期不再迷茫,不再慌乱,so easy 的应对业务. 本文分享自华为云社区<云图说 | 第 ...

  5. 数据探索神器:火山引擎 DataLeap Notebook 揭秘

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 背景介绍 Notebook 解决的问题 部分任务类型(python.spark等)在创建配置阶段,需要进行分步调试 ...

  6. 用 docker 部署 folkmq 消息中间件

    docker run -p 18602:18602 -p 8602:8602 noearorg/folkmq-server:1.0.19

  7. HanLP — HMM隐马尔可夫模型 -- 语料库

    隐马尔可可夫模型(Hidden Markov Model,HMM)是统计模型,用于描述一个含有隐含未知参数的马尔可夫过程. HMM由初始概率分布.状态转移概率分布和观测概率分布确定. BMES =&g ...

  8. PPT 合并形状

    形状格式 -> 插入形状 -> 合并形状 选中的元素,就是要保留的元素. 可以到 https://www.iconfont.cn/ 下载SVG格式插入 PPT中进行使用 合并开状的应用 文 ...

  9. python 线程池 ThreadPoolExecutor

    从Python3.2开始,标准库为我们提供了concurrent.futures 模块,它提供了 ThreadPoolExecutor (线程池)和 ProcessPoolExecutor (进程池) ...

  10. 这两种完全不同的JPEG加载方式,你肯定见过!

    现如今网站所使用的的图片格式多种多样,但是有一种图片格式占到了 74% 的使用量.它就是 JPEG,即联合图像专家组.这类文件的后缀通常为 .jpg 或 .jpeg,是摄影中常见的图片类型. JPEG ...