【问题标题】:Spring Boot Tomcat Configuration, migration from container to embeddedSpring Boot Tomcat 配置,从容器迁移到嵌入式
【发布时间】:2017-12-01 04:05:29
【问题描述】:

我正在将用于在 Tomcat 容器中运行的 Spring Boot 应用程序迁移到运行嵌入式 Tomcat 的 Spring Boot 应用程序。 我的旧 Tomcat 配置在 server.xml 中有这些配置:

<Connector 
    executor="tomcatThreadPool"
    port="8080"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    acceptCount="500"
    acceptorThreadCount="2"
    maxThreads="150"
    maxHttpHeaderSize="32768"
    maxHeaderCount="256"
    connectionTimeout="20000"
    maxKeepAliveRequests="-1"
    redirectPort="8443"
    useComet="false"
    socket.appReadBufSize="87380"
    socket.rxBufSize="87380"
    socket.performanceConnectionTime="2"
    socket.performanceLatency="0"
    socket.performanceBandwidth="1"
    server="My server"
    />

我能够使用 bean 设置大部分属性

@Bean
public EmbeddedServletContainerFactory embeddedServletContainerFactory() {
    TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory = new TomcatEmbeddedServletContainerFactory();
    tomcatEmbeddedServletContainerFactory.setProtocol("org.apache.coyote.http11.Http11Nio2Protocol");
    tomcatEmbeddedServletContainerFactory.addConnectorCustomizers((TomcatConnectorCustomizer) connector -> {
        AbstractHttp11JsseProtocol<Nio2Channel> handler = (AbstractHttp11JsseProtocol)connector.getProtocolHandler();
        handler.setMaxKeepAliveRequests(-1);
        handler.setAcceptorThreadCount(2);
        handler.setMaxHeaderCount(256);
        connector.setRedirectPort(8443);
    });

    return tomcatEmbeddedServletContainerFactory;
}

和application.xml属性:

server.tomcat.accept-count = 500
server.tomcat.max-threads = 600
server.port = 8080
server.max-http-header-size = 32768
server.connection-timeout = 20000

但是我不知道如何设置这部分

useComet="false"
socket.appReadBufSize="87380"
socket.rxBufSize="87380"
socket.performanceConnectionTime="2"
socket.performanceLatency="0"
socket.performanceBandwidth="1"
server="My server"

谁能帮帮我? 谢谢

【问题讨论】:

    标签: java spring spring-mvc tomcat spring-boot


    【解决方案1】:
    connector.setProperty("socket.appReadBufSize", "87380");
    connector.setProperty("socket.rxBufSize", "87380");
    connector.setProperty("socket.performanceConnectionTime", "2");
    connector.setProperty("socket.performanceLatency", "0");
    connector.setProperty("socket.performanceBandwidth", "1");
    connector.setProperty("server", "My server");
    

    工作得很好。 但是,检查 connector.setProperty 的返回值很重要。它试图找到正确的方法来调用每个属性,如果找到方法并且设置了属性,则返回 true。 不幸的是,connector.setProperty("useComet", Boolean.toString(false)); 不起作用,返回 false。

    【讨论】:

      【解决方案2】:

      试试这个:

      connector.setProperty("useComet", Boolean.toString(false));
      connector.setProperty("socket.appReadBufSize", "87380");
      connector.setProperty("socket.rxBufSize", "87380");
      connector.setProperty("socket.performanceConnectionTime", "2");
      connector.setProperty("socket.performanceLatency", "0");
      connector.setProperty("socket.performanceBandwidth", "1");
      connector.setProperty("server", "My server");
      

      【讨论】:

        猜你喜欢
        • 2017-08-08
        • 2021-04-30
        • 1970-01-01
        • 2018-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-20
        • 1970-01-01
        相关资源
        最近更新 更多