2025年6月6日 星期五 乙巳(蛇)年 三月初十 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Spring Boot

springboot内嵌tomcat优化

时间:03-04来源:作者:点击数:14

可以在外挂的配置文件application.properties中优化tomcat配置

在spring-configuration-metadata.json文件中相关tomcat配置

server.tomcat.accept-count:等待队列长度,默认100

server.tomcat.max-connections:最大可连接数,默认10000

server.tomcat.max-threads:最大工作线程数,默认200

server.tomcat.min-spare-threads:最小工作线程数,默认10

server.tomcat.accesslog.enabled=true  开启access日志

server.tomcat.accesslog.directory=/var/www//tomcat  日志存放的路径

server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D  日志格式为:请求的host主机地址,时间,方式,路径,协议,状态,返回字节数,处理时间

注意:默认配置下,连接数超过10000后出现拒接连接情况;触发的请求超过200+100后拒绝处理

定制内嵌tomcat开发

相关参数:

keepAliveTimeOut:多少毫秒后不响应的断开keepalive

maxKeepAliveRequests:多少次请求后keepalive断开失效

keepAlive简介:参考这里 

优点: Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。,长连接能够保证服务器和客户端的socket能够高效利用,减少握手等额外的开销。

缺点:但是,对于负担较重的网站来说,这里存在另外一个问题:虽然为客户保留打开的连 接有一定的好处,但它同样影响了性能,因为在处理暂停期间,本来可以释放的资源仍旧被占用。当Web服务器和应用服务器在同一台机器上运行时,Keep-Alive功能对资源利用的影响尤其突出。 

内嵌tomcat设置方法:

实现   WebServerFactoryCustomizer<ConfigurableWebServerFactory>

具体如下:

  • import org.apache.catalina.connector.Connector;
  • import org.apache.coyote.http11.Http11NioProtocol;
  • import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
  • import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
  • import org.springframework.boot.web.server.ConfigurableWebServerFactory;
  • import org.springframework.boot.web.server.WebServerFactoryCustomizer;
  • import org.springframework.stereotype.Component;
  • //当Spring容器中没有TomcatEmbeddedServletContainerFactory这个bean时,会把此bean加载进容器
  • @Component
  • public class WebServerConfiguration implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> {
  • @Override
  • public void customize(ConfigurableWebServerFactory factory) {
  • //使用工厂类定制tomcat connector
  • ((TomcatServletWebServerFactory)factory).addConnectorCustomizers(new TomcatConnectorCustomizer() {
  • @Override
  • public void customize(Connector connector) {
  • Http11NioProtocol protocol= (Http11NioProtocol) connector.getProtocolHandler();
  • //设置30秒无响应则断开keepalive
  • protocol.setKeepAliveTimeout(30000);
  • //设置最大10000次请求后则断开keepalive
  • protocol.setMaxKeepAliveRequests(10000);
  • }
  • });
  • }
  • }
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
上一篇:SpringBoot内嵌Tomcat的坑 下一篇:很抱歉没有了
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐