Spring Boot配置tomcat优化

298 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第8天,点击查看活动详情

Spring Boot 能支持的最大并发量主要看其对Tomcat的设置,可以在配置文件中对其进行更改。当在配置文件中敲出max后提示值就是它的默认值,我们可以看到默认设置中,Tomcat默认的最大工作线程数为200(Springboot 默认tomcat最大线程数),最小为10。

image.png

springboot配置servlet容器

springboot中默认可以集成多种servlet容器,当引入如下依赖时

image.png

springboot默认以tomcat作为项目的servlet容器,如果用户想要替换tomcat为jetty或者undertow,只需要做以下更改:

image.png

通过application.yaml配置tomcat

并发数(工作线程数,默认就是200,最小10,按需求配置) server.tomcat.threads.max=200

可维持请求数(默认是8192,不知道这个数字怎么来的,但是官网文档是这样写的) server.tomcat.max-connections=8192

当所有可能的请求处理线程都在使用时,传入的连接请求的最大队列长度。 server.tomcat.accept-count=100

设置请求超时时间 server.tomcat.connection-timeout: 30s

设置等待队列的请求的等待超时时间 server.tomcat.keep-alive-timeout: 60s

配置Tomcat编码,默认为 server.tomcat.uri-encoding = UTF-8

要注意的是,当最大请求连接数小于最大线程数时,tomcat处理(最大并发)以最大连接数为准。

HTTPS 配置

由于 HTTPS 具有良好的安全性,在开发中得到了越来越广泛的应用。

配置说明:

server.ssl.key-store=hangge.p12 #server.ssl.key-store:表示密钥文件名

server.ssl.key-alias=tomcathttps #server.ssl.key-alias:表示密钥别名

server.ssl.key-store-password=123456 #server.ssl.key-store-password:即前面创建证书过程中输入的密码

jdk 提供的数字证书管理工具 keytool 在 \jdk\bin 目录下。我们在终端中执行如下命令自行生成一个数字证书:

命令参数说明:

-genkey:表示要创建一个新的密钥

-alias:表示 keystore 的别名

-keyalg:表示使用的加密算法是 RSA(一种非对称加密算法)

-keysize:表示密钥的长度

-keystore:表示生成的密钥存放位置

-validity:表示密钥的有效时间(单位为天)

keytool -genkey -alias tomcathttps -keyalg RSA -keysize 2048 -keystore hangge.p12 -validity 365

上述命令执行过程中会要求输入密钥口令等信息,我们根据提示一步步输入即可。最终会在当前目录下生成一个 hangge.p12 的文件,复制到项目的根目录下,配置中直接引入。