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后拒绝处理
keepAliveTimeOut:多少毫秒后不响应的断开keepalive
maxKeepAliveRequests:多少次请求后keepalive断开失效
优点: Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。,长连接能够保证服务器和客户端的socket能够高效利用,减少握手等额外的开销。
缺点:但是,对于负担较重的网站来说,这里存在另外一个问题:虽然为客户保留打开的连 接有一定的好处,但它同样影响了性能,因为在处理暂停期间,本来可以释放的资源仍旧被占用。当Web服务器和应用服务器在同一台机器上运行时,Keep-Alive功能对资源利用的影响尤其突出。
实现 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);
- }
- });
- }
- }