Springboot内置Tomcat配置参数调优方式

 更新时间:2023年06月26日 09:46:08   作者:优雅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 映射、初始化参数等。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java方法重载Overload原理及使用解析

    Java方法重载Overload原理及使用解析

    这篇文章主要介绍了Java方法重载Overload原理及使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java基础之隐式转换vs强制转换

    Java基础之隐式转换vs强制转换

    这篇文章主要介绍了Java基础之隐式转换vs强制转换的相关资料,需要的朋友可以参考下
    2015-12-12
  • springBoot整合RocketMQ及坑的示例代码

    springBoot整合RocketMQ及坑的示例代码

    这篇文章主要介绍了springBoot整合RocketMQ及坑的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • Java实现Consul/Nacos根据GPU型号、显存余量执行负载均衡的步骤详解

    Java实现Consul/Nacos根据GPU型号、显存余量执行负载均衡的步骤详解

    这篇文章主要介绍了Java实现Consul/Nacos根据GPU型号、显存余量执行负载均衡的步骤详解,本文分步骤结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2025-04-04
  • Java异常分类及统一处理详解

    Java异常分类及统一处理详解

    这篇文章主要为大家详细介绍了Java异常分类及统一处理,SpringMVC处理异常支持ajax,web.xml配置异常,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • Spring框架之IOC介绍讲解

    Spring框架之IOC介绍讲解

    IOC-Inversion of Control,即控制反转。它不是什么技术,而是一种设计思想。这篇文章将为大家介绍一下Spring控制反转IOC的原理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • Springboot整合Freemarker的实现详细过程

    Springboot整合Freemarker的实现详细过程

    这篇文章主要介绍了Springboot整合Freemarker的实现详细过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Java常用类库StringBuffer,Runtime,日期操作类等类库总结

    Java常用类库StringBuffer,Runtime,日期操作类等类库总结

    这篇文章主要介绍了Java常用类库StringBuffer,Runtime,日期操作类等类库总结,需要的朋友可以参考下
    2020-02-02
  • 使用filter实现url级别内存缓存示例

    使用filter实现url级别内存缓存示例

    这篇文章主要介绍了使用filter实现url级别内存缓存示例,只需要一个静态类,在filter中调用,也可以全部写到filt里面。可以根据查询参数分别缓存,需要的朋友可以参考下
    2014-03-03
  • Java利用POI实现导入导出Excel表格

    Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08

最新评论