springboot项目如何通过优化tomcat提供系统性能
1. 配置文件中配置tomcat相关数据,大致如下:
server.tomcat.accept-count=1000 // 队列数,线程数达到最大值之后会进入线程队列
server.tomcat.max-threads=800 // 最大线程数,不宜设置过大,线程的切换是需要消耗cpu资源的,对性能会有损耗,4核8G的机子配置在800-1000比较合适
server.tomcat.min-spare-threads=100 // 最大空闲线程数,主要用于应急处理
2. 配置定制化tomcat
新建一个tomcat配置类,配置keepAlive最大连接时间和连接数,keepAlive属于长连接,适当配置可以提高性能
基础篇-SpringBoot那些事
以历代Spring Framework的进步为基础,Spring Boot实现配置自动化,依赖更简单,监控更容易,Spring Boot项目也是普通的Spring项目,只是他们正好用到了Spring Boot的起步依赖和自动配置而已,Spring Boot精要:
Spring支持Java配置和XML配置,他们为应用程序开启了特定的特性和功能,SpringBoot实现了自动配置,可以减少配置负担。
自动配置=spring-boot-autoconfigure+condition
没什么特别的,自动配置并不是智能配置,也是通过一个一个的配置文件实现的,Spring Boot把这些繁琐的工作处理了。我们看一个例子:
自动配置很好,很强大,自由选择同样重要
- 覆盖Spring Boot自动配置,覆盖配置很简单,直接显式地写一段配置即可
- 通过属性文件外置配置,Spring Boot提供了多种设置途径,常用包括如下,按优先级排列,越前优先级越高
- XML配置的特殊用处
- 优化SpringBootApplication
向项目中添加依赖是件富有挑战的事,SpringBoot通过起步依赖为项目的依赖管理提供帮助,起步依赖引入的库都经过测试,不会出现不兼容的情况。
Spring Boot提供了运行时检视应用程序内部情况的能力,包括应用Bean,自动配置,环境变量,内存用量,垃圾回收,Web请求。可以结合prometheus来可视化监控和报警。
SpringBoot入门系列
基础篇-Java相关的有些事
基础篇-SpringBoot那些事
基础篇-Spring必须知道的
基础篇-工欲善其事
摘自
*Spring Boot实战
*Spring Boot解密
**需要PDF书籍的可以私聊
Springboot内置Tomcat配置调优实战
Tomcat的 maxConnections、maxThreads、acceptCount 三大配置,分别表示最大连接数,最大线程数、最大的等待数,可以通过application.yml配置文件来改变这个三个值.
# tomcat 8
# tomcat 9
1、accept-count:最大等待数
官方文档:当所有的请求处理线程都在使用时,所能接收的连接请求的队列的最大长度。当队列 已满时 ,任何的连接请求都将 被拒绝 。accept-count的默认值为100。
详细的来说:当调用HTTP请求数达到tomcat的最大线程数时,还有新的HTTP请求到来,这时tomcat会将该请求放在等待队列中,这个acceptCount就是指能够接受的最大等待数,默认100。如果等待队列也被放满了,这个时候再来新的请求就会被tomcat拒绝(connection refused)。
2、maxThreads:最大线程数
每一次HTTP请求到达Web服务,tomcat都会创建一个线程来处理该请求,那么最大线程数 决定了Web服务容器可以同时处理多少个请求 。maxThreads默认200,肯定建议增加。但是,增加线程是有成本的,更多的线程,不仅仅会带来更多的线程上下文切换的成本,而且意味着带来更多的内存消耗。JVM中默认情况下在创建新线程时会分配大小为1M的线程栈,所以,更多的线程异味着需要更多的内存。
线程数的经验值为 :1核2g内存为200,线程数经验值200;4核8g内存,线程数经验值800。
3、maxConnections:最大连接数
官方文档:
这个参数是指在同一时间, tomcat能够接受的最大连接数 。对于Java的阻塞式BIO,默认值是maxthreads的值;如果在BIO模式使用定制的Executor执行器,默认值将是执行器中maxthreads的值。对于Java 新的NIO模式,maxConnections 默认值是10000。
对于windows上APR/native IO模式,maxConnections默认值为8192,这是出于性能原因,如果配置的值不是1024的倍数,maxConnections 的实际值将减少到1024的最大倍数。
如果设置为-1,则禁用maxconnections功能,表示不限制tomcat容器的连接数。
maxConnections和accept-count的关系为:当连接数达到最大值maxConnections后,系统 会继续接收连接 ,但 不会超过acceptCount的值 。