java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Springboot优化内置服务器Tomcat优化

Springboot优化内置服务器Tomcat优化方式(underTow)

作者:Java杨永杰

本文详细介绍了Spring Boot中Tomcat和Undertow服务器的配置和优化,包括初始线程数、最大线程数、最小备用线程数、最大请求数等参数的优化建议,以及在高并发场景下Undertow相对于Tomcat的优势

前言

通过org.springframework.boot.autoconfigure.web.ServerProperties查看,其中包括属性tomcat、jetty、undertow三种服务器的设置,默认启用tomcat。

Tomcat 自身优化

# Tomcat
server:
  tomcat:
    uri-encoding: UTF-8
    #最小线程数
    min-spare-threads: 500
    #最大线程数
    max-threads: 2500
    #最大链接数
    max-connections: 6500
    #最大等待队列长度
    accept-count: 1000
    #请求头最大长度kb
    max-http-header-size: 1048576
    #请请求体最大长度kb
    #max-http-post-size: 2097152
  #服务http端口
  port: 8080
  #链接建立超时时间
  connection-timeout: 12000
  servlet:
    #访问根路径
    context-path: /son

比较重要的有两个:初始线程数和最大线程数。

其它参数优化:

UnderTow优化

为什么要变成UnderTow?

我们在相同机器配置下压测Tomcat和Undertow,得到的测试结果如下所示:

内存使用对比:

结论:

Undertow在高并发业务场景中,性能优于Tomcat

实现方式

POM文件移除tomcat换成underTow

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId><!-- 移除掉默认支持的 Tomcat -->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-undertow</artifactId>
        </dependency>

配置相关参数:

# 是否打开 undertow 日志,默认为 false
server.undertow.accesslog.enabled=false
# 设置访问日志所在目录
server.undertow.accesslog.dir=logs
# 指定工作者线程的 I/0 线程数,默认为 2 或者 CPU 的个数
server.undertow.io-threads=
# 指定工作者线程个数,默认为 I/O 线程个数的 8 倍
server.undertow.worker-threads=
# 设置 HTTP POST 内容的最大长度,默认不做限制
server.undertow.max-http-post-size=0

最后直接main 方法启动Springboot即可。

总结

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

您可能感兴趣的文章:
阅读全文