从0到100%优化:Spring Boot内嵌Tomcat性能飞跃实战
import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.stereotype.Component;
@Component
public class TomcatCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
@Override
public void customize(TomcatServletWebServerFactory factory) {
factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
@Override
public void customize(Connector connector) {
// 设置最大线程数
connector.setProperty("maxThreads", "200");
// 设置acceptCount,指定当所有可以使用的处理请求的线程数都在使用时,可以放到处理队列中的请求数,超过这个数的请求将不会处理,直接返回503错误
connector.setProperty("acceptCount", "100");
// 设置connectionTimeout,指定超时的时间数(单位:毫秒)
connector.setProperty("connectionTimeout", "20000");
// 设置keepAliveTimeout,指定长连接的超时时间(单位:毫秒)
connector.setProperty("keepAliveTimeout", "300000");
// 设置maxKeepAliveRequests,指定长连接的最大请求数
connector.setProperty("maxKeepAliveRequests", "100");
// 设置compression,开启压缩
connector.setProperty("compression", "on");
// 设置compressionMinSize,指定压缩的最小大小
connector.setProperty("compressionMinSize", "2048");
// 设置compressableMimeType,指定压缩的文件类型
connector.setProperty("compressableMimeType", "text/html,text/xml,text/plain,text/css,application/json,application/javascript,application/x-javascript");
// 设置connectionLinger,指定socket的linger设置
connector.setProperty("connectionLinger", "5");
// 设置tcpNoDelay,指定是否启用TCP_NO_DELAY
connector.setProperty("tcpNoDelay", "true");
// 设置soTimeout,指定socket超时时间(单位:毫秒)
connector.setProperty("soTimeout", "300000");
}
});
}
}
这段代码演示了如何在Spring Boot应用中自定义Tomcat的Connector设置,包括线程池大小、连接超时、长连接设置、压缩设置等,以提高Tomcat的性能和资源利用效率。
评论已关闭