Springboot tomcat.threads线程数学习

springboot,tomcat,threads,线程,学习 · 浏览次数 : 186

小编点评

代码生成时需要带简单的排版,为了保持代码的清晰性和易读性,需要对代码进行简单的排版。 排版方法可以根据代码的类型进行选择,以下是一些常见排版方法的例子: * **方法一:代码行间** 代码行间是代码中的一行,可以通过在代码行间添加空白字符来进行排版。 例如: ```java 代码行间 ``` * **方法二:代码行间** 代码行间是代码中的一行,可以通过在代码行间添加空白字符来进行排版。 例如: ```java 代码行间 ``` * **方法三:代码行间** 代码行间是代码中的一行,可以通过在代码行间添加空白字符来进行排版。 例如: ```java 代码行间 ``` * **方法四:代码行间** 代码行间是代码中的一行,可以通过在代码行间添加空白字符来进行排版。 例如: ```java 代码行间 ``` * **方法五:代码行间** 代码行间是代码中的一行,可以通过在代码行间添加空白字符来进行排版。 例如: ```java 代码行间 ``` * **方法六:代码行间** 代码行间是代码中的一行,可以通过在代码行间添加空白字符来进行排版。 例如: ```java 代码行间 ```

正文

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线程数学习相似的内容:

Springboot tomcat.threads线程数学习

Springboot tomcat.threads线程数学习 摘要 压测完nginx 突然想搞一下springboot内嵌的tomcat的 threads的参数 一不做二不休, 直接就着脚本进行学习和验证 修改参数 产品里面默认参数值是 500 我这边改大一下 tomcat threads: max

SpringBoot内置tomcat启动过程及原理

作者:李岩科 1 背景 SpringBoot 是一个框架,一种全新的编程规范,他的产生简化了框架的使用,同时也提供了很多便捷的功能,比如内置 tomcat 就是其中一项,他让我们省去了搭建 tomcat 容器,生成 war,部署,启动 tomcat。因为内置了启动容器,应用程序可以直接通过 Mave

Springboot项目使用Undertow替换内置Tomcat服务器,实现RESTFUL接口web应用

Maven实例:pom.xml文件中添加更换依赖 org.springframework.boot spring-boot-starter

HTTPS下tomcat与nginx的前端性能比较

HTTPS下tomcat与nginx的前端性能比较 摘要 之前比较http的web服务器的性能. 发现nginx 比 tomcat 要好 50% 然后想到, https的情况下不知道两者有什么区别 所以准备再尝试一下. 换用https进行检查. Springboot的设置 server: ssl:

nginx实现 springboot项目的负载均衡 策略

weight 代表权重,默认为1,权重越高被分配的客户端越多 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 例如 # 反向代理配置upstream server_list{# 这个是tomcat的访问路径server localhost:8080 weight=5;se

[转帖]Spring Boot中Tomcat是怎么启动的

https://zhuanlan.zhihu.com/p/208318177 Spring Boot一个非常突出的优点就是不需要我们额外再部署Servlet容器,它内置了多种容器的支持。我们可以通过配置来指定我们需要的容器。 本文以我们平时最常使用的容器Tomcat为列来介绍以下两个知识点: Spr

SpringBoot实战:轻松实现接口数据脱敏

引言 在现代的互联网应用中,数据安全和隐私保护变得越来越重要。尤其是在接口返回数据时,如何有效地对敏感数据进行脱敏处理,是每个开发者都需要关注的问题。本文将通过一个简单的Spring Boot项目,介绍如何实现接口数据脱敏。 一、接口数据脱敏概述 1.1 接口数据脱敏的定义 接口数据脱敏是指在接口返

SpringBoot彩蛋之定制启动画面

写在前面 在日常开发中,我们经常会看到各种各样的启动画面。例如以下几种 ① spring项目启动画面 ② mybatisplus启动画面 ③若依项目启动画面 还有很多各式各样好看的启动画面,那么怎么定制这些启动画面呢? 一、小试牛刀 ① 新建一个SpringBoot项目 ②在项目的resources

Springboot中自定义监听器

一、监听器模式图 二、监听器三要素 广播器:用来发布事件 事件:需要被传播的消息 监听器:一个对象对一个事件的发生做出反应,这个对象就是事件监听器 三、监听器的实现方式 1、实现自定义事件 自定义事件需要继承ApplicationEvent类,并添加一个构造函数,用于接收事件源对象。 该事件中添加了

网易面试:SpringBoot如何开启虚拟线程?

虚拟线程(Virtual Thread)也称协程或纤程,是一种轻量级的线程实现,与传统的线程以及操作系统级别的线程(也称为平台线程)相比,它的创建开销更小、资源利用率更高,是 Java 并发编程领域的一项重要创新。 PS:虚拟线程正式发布于 Java 长期支持版(Long Term Suort,LT