目前的java开发中,越来越多的企业,基本上都上springboot开发框架了,尤其是一些小型软件公司。
为了可以更快速的搭建开发的框架,实现项目的快速交付。毕竟原来的springmvc模式,配置确实是比较多。
在使用springboot框架后,我们在部署项目,基本上就不需要再搞一个tomcat中间件,因为springboot已经是内嵌了tomcat中间件,直接运行jar包就可以了。
那内嵌的tomcat服务,对于大部分人来说,好像一时之间,找不到tomcat的配置,该如何进行配置?
也就是说,无法进行tomcat的调优了(也有可能是,根本就没接触过调优)。
作为一个有经验的程序员,我们得修炼我们得内功心法才行,不然被别人称为菜鸟,那就很尴尬了。
那我们今天就对tomcat调优的一些内容,进行分享!!!
为什么对Tomcat进行调优?
基于服务器性能瓶颈分析,与服务端线程数得出结论。当前系统瓶颈主要存在与Tomcat!
查看Tomcat配置是否生效,建议开启SpringBoot的监控点
Springboot开发的服务使用内嵌的tomcat服务器来启动服务,那么tomcat配置使用的是默认配置,我们需要对tomcat配置进行一些适当的优化,让tomcat性能得以提升。
这里我们先观看springboot项目启动,默认的tomcat配置,如下图所示:
这个配置,我们该如何查看呢?这里我们可以借助 actuator 工具查看。
然后直接浏览器打开即可: http://localhost:8080/actuator/configprops
在pom.xml文件,加上下面的依赖即可
org.springframework.boot spring-boot-starter-actuator
当然,你也可以直接进入源码查看,也是可以的。 actuator 工具是为了更直观。
以上是内嵌tomcat默认的线程数配置,这里,我们可以进行调优:
改写Tomcat相关配置,修改配置如下所示:
# Tomcat的maxConnections、maxThreads、acceptCount三大配置,分别表示最大连接数,最大线程数、最大的等待数,可以通过application.yml配置文件来改变这个三个值,一个标准的示例如下:server.tomcat.uri-encoding= UTF-8# 思考问题:一台服务器配置多少线程合适?server.tomcat.accept-count= 1000 # 等待队列最多允许 1000 个请求在队列中等待server.tomcat.max-connections= 20000 # 最大允许 20000 个链接被建立## 最大工作线程数,默认200, 4核8g内存,线程数经验值 1000server.tomcat.threads.max= 1000 # 并发处理创建的最大的线程数量server.tomcat.threads.min-spare= 100 # 最大空闲连接数,防止突发流量
计算公式:
# java查看xss的值的命令java -XX:+PrintFlagsFinal -version | grep ThreadStackSize# 计算最大线程数的公式:Number of threads = (MaxProcess内存 - JVM内存 - ReservedOsMemory) / (ThreadStackSize)系统最大可创建的线程数量=(机器本身可用内存 - (JVM分配的堆内存+JVM元数据区)) / Xss的值
明显,这里的xss的值为1024k,也就是1m
还记得xss的值嘛?
这里的xss的值调优,我们之前应该是分享过了,详情可以查看这里: JVM调优-JVM调优实践二
扩展:JVM最大创建线程数
查看,浏览器打开: http://localhost:8080/actuator/configprops
未优化性能表:
并发数/ 5s | 平均响应时间(RT) | 吞吐量(TPS) | 错误率 |
200 | 1000 | 200 | 0 |
300 | 1464 | 191 | 0 |
500 | 2431 | 197 | 0 |
700 | 3414 | 198 | 0 |
1000 | 4891 | 199 | 0 |
优化后性能表:
并发数/ 5s | 样本数 | 平均响应时间(ms) | 吞吐量(TPS) |
200 | 10000 | 1000 | 181 |
300 | 15000 | 1000 | 272 |
500 | 25000 | 1000 | 454 |
700 | 35000 | 1002 | 636 |
1000 | 50000 | 1001 | 908 |
1500 | 75000 | 1418 | 960 |
2000 | 100000 | 1935 | 973 |
未优化之前最大线程数:
优化之后最大线程数:
可以发现,经过优化后,程序性能提升 4 倍+;
好了,以上就是 服务端优化-Tomcat调优 的分享了。
如果觉得有收获的,帮忙 点赞、评论、收藏 一下呗!!!
转自:https://juejin.cn/post/7130909498285228040
留言与评论(共有 0 条评论) “” |