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使用回溯法求解数独示例

    java使用回溯法求解数独示例

    这篇文章主要介绍了java使用回溯法求解数独示例,大家参考使用吧
    2014-01-01
  • Spring框架AOP面向切面编程原理全面分析

    Spring框架AOP面向切面编程原理全面分析

    这篇文章主要介绍了Spring框架AOP面向切面编程的全面分析,文中附含详细的示例代码分析,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-09-09
  • Java三种移位运算符原理解析

    Java三种移位运算符原理解析

    这篇文章主要介绍了Java三种移位运算符原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • springboot 如何使用jedis连接Redis数据库

    springboot 如何使用jedis连接Redis数据库

    这篇文章主要介绍了springboot 使用jedis连接Redis数据库的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • 最简单的Spring Cloud教程第一篇:服务的注册与发现(Eureka)

    最简单的Spring Cloud教程第一篇:服务的注册与发现(Eureka)

    这篇文章主要给大家介绍了关于Spring Cloud服务的注册与发现(Eureka)的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用spring cloud具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-08-08
  • Java实现简单班级管理系统

    Java实现简单班级管理系统

    这篇文章主要为大家详细介绍了Java实现简单班级管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Java:不支持发行版本5的超详细简单解决方案

    Java:不支持发行版本5的超详细简单解决方案

    发行版本5是Java5,已经是十多年前的版本了,现在已经不再被支持,如果您使用的是旧版的Java开发工具,可能会出现这样的错误,这篇文章主要给大家介绍了关于Java:不支持发行版本5的超详细简单解决方案,需要的朋友可以参考下
    2024-01-01
  • SpringBoot 项目打成 jar后加载外部配置文件的操作方法

    SpringBoot 项目打成 jar后加载外部配置文件的操作方法

    这篇文章主要介绍了SpringBoot 项目打成 jar后加载外部配置文件的操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • 获取Spring当前配置的两种方式

    获取Spring当前配置的两种方式

    这篇文章主要给大家介绍了获取Spring当前配置的,两种方式文中通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-01-01
  • Java中Word与PDF转换为图片的方法详解

    Java中Word与PDF转换为图片的方法详解

    这篇文章主要为大家详细介绍了如何使用Java实现将Word与PDF转换为图片,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-10-10

最新评论