Springboot内置Tomcat配置参数调优方式
作者:优雅de程序员
这篇文章主要介绍了Springboot内置Tomcat配置参数调优方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
Springboot内置Tomcat配置参数调优
Springboot内置Tomcat配置参数调优,首先,线程数是一个重点,每一次HTTP请求到达Web服务器,Web服务器都会创建一个线程来处理该请求,该参数决定了应用服务同时可以处理多少个HTTP请求。
比较重要的有两个:初始线程数和最大线程数。
- 初始线程数:
保障启动的时候,如果有大量用户访问,能够很稳定的接受请求。最大线程数:用来保证系统的稳定性。
- 超时时间:
用来保障连接数不容易被压垮。如果大批量的请求过来,延迟比较高,很容易把线程数用光,这时就需要提高超时时间。这种情况在生产中是比较常见的 ,一旦网络不稳定,宁愿丢包也不能把服务器压垮。
min-spare-threads
:最小备用线程数,tomcat启动时的初始化的线程数,默认10。(适当增大一些,以便应对突然增长的访问量)max-threads
:Tomcat可创建的最大的线程数,每一个线程处理一个请求,超过这个请求数后,客户端请求只能排队,等有线程释放才能处理。最大工作线程数,默认200。(4核8g内存,线程数800,一般是核数*200。操作系统做线程之间的切换调度是有系统开销的,所以不是越多越好。)accept-count
:当调用Web服务的HTTP请求数达到tomcat的最大线程数时,还有新的HTTP请求到来,这时tomcat会将该请求放在等待队列中,这个acceptCount就是指能够接受的最大等待数,默认100。如果等待队列也被放满了,这个时候再来新的请求就会被tomcat拒绝(connection refused),队列也做缓冲池用,但也不能无限长,不但消耗内存,而且出队入队也消耗CPU。max-connections
:这个参数是指在同一时间,tomcat能够接受的最大连接数。一般这个值要大于(max-threads)+(accept-count)。connection-timeout
:最长等待时间,如果没有数据进来,等待一段时间后断开连接,释放线程。
在spring boot配置文件中application.yml,添加以下配置:
server: tomcat: uri-encoding: UTF-8 #最小线程数 min-spare-threads: 100 #最大线程数 max-threads: 800 #最大链接数 max-connections: 10000 #最大等待队列长度 accept-count: 500
Tomcat调优常见参数配置
Tomcat 是一个流行的 Web 应用服务器,以下是一些常见的 Tomcat 配置参数:
1.端口配置
- HTTP 端口:tomcat 默认使用 8080 端口,可以通过修改 server.xml 文件中的 Connector 配置来更改端口号。
- HTTPS 端口:如果需要启用 HTTPS 协议,需要在 server.xml 中添加 Connector 配置,并指定证书等相关参数。
- AJP 端口:如果需要与 Apache 或其他 Web 服务器进行集成,可以使用 AJP 协议,在 server.xml 中添加 Connector 配置,并指定 AJP 端口号和协议版本。
2.日志配置
- AccessLog:Tomcat 的 AccessLog 组件可以记录每个请求的详细信息,包括请求 URL、响应状态码、访问时间等,可以在 server.xml 中进行配置。
- Logging:Tomcat 的 Logging 组件可以记录 Tomcat 自身的运行日志,可以在 conf/logging.properties 中进行配置。
3.连接池配置
- 最大连接数(maxConnections):指定连接池中的最大连接数。
- 最小空闲连接数(minIdle):指定连接池中保留的最小空闲连接数。
- 连接等待超时时间(maxWait):当连接池中的连接数已达最大值时,请求新连接的等待时间。
4.内存配置
- JVM 内存参数:指定 Tomcat 使用的 JVM 内存大小,包括初始内存大小(Xms)、最大内存大小(Xmx)、新生代内存大小(XX:NewSize)、Eden 区大小(XX:MaxNewSize)等。
- PermGen 参数:PermGen 是 JVM 中用于存放类信息、字符串常量等的区域,可以通过 -XX:PermSize 和 -XX:MaxPermSize 参数来指定 PermGen 的大小。
5.虚拟主机配置
- Host 配置:在 server.xml 中配置多个 Host 可以实现虚拟主机的配置,每个 Host 对应一个独立的 Web 应用,可以拥有自己的域名、文档根目录等属性。
- Context 配置:在每个 Host 中可以配置多个 Context,每个 Context 对应一个独立的 Web 应用,可以拥有自己的 Web 应用名称、上下文路径、文档根目录等属性。
6.安全配置
- 用户认证(Authentication):Tomcat 支持多种用户认证方式,包括基于表单、基于 LDAP、基于 JASPI 等。
- SSL 配置:通过在 server.xml 中配置 SSL 相关参数,可以启用 HTTPS 协议,并配置证书等相关信息。
- 访问控制(Access Control):Tomcat 提供了基于 IP、基于 URL 等多种访问控制方式,可以在 web.xml 中进行配置。
7.JSP/Servlet 配置
- JSP 编译参数:可以在 web.xml 中配置 JSP 编译参数,包括是否开启 JSP 编译缓存、是否开启 JSP 自动重新编译等。
- Servlet 配置:可以在 web.xml 中配置 Servlet 相关参数,包括 Servlet 类名、URL 映射、初始化参数等。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。