J2EE学习--SpringBoot

springboot2.0 tomcat 优化

2018-12-18  本文已影响102人  晏雪峤_美杜莎

import org.apache.catalina.LifecycleListener;

import org.apache.catalina.connector.Connector;

import org.apache.catalina.core.AprLifecycleListener;

import org.apache.coyote.http11.Http11AprProtocol;

import org.apache.coyote.http11.Http11NioProtocol;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;

import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;

import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

/**

* @Auther: xxxx

* @Date: 2018/8/23 11:28

* @Description: tomcat 参数配置.

*/

@Configuration

public class TomcatConfig {

    @Value("${tomcat.apr:false}")

    private boolean enabled;

    @Bean

    public ConfigurableServletWebServerFactory webServerFactory()

    {

        TomcatServletWebServerFactory tomcatFactory = new TomcatServletWebServerFactory();

        tomcatFactory.addConnectorCustomizers(new MyTomcatConnectorCustomizer());

        if (enabled) {

            LifecycleListener aprLifecycle = new AprLifecycleListener();

            tomcatFactory.setProtocol("org.apache.coyote.http11.Http11AprProtocol");

            tomcatFactory.addContextLifecycleListeners(aprLifecycle);

        }

        return tomcatFactory;

    }

    class MyTomcatConnectorCustomizer implements TomcatConnectorCustomizer

    {

        public void customize(Connector connector)

        {

            if(enabled) {

                Http11AprProtocol protocol = (Http11AprProtocol) connector.getProtocolHandler();

                //设置最大连接数

                protocol.setMaxConnections(5000);

                //设置最大线程数

                protocol.setMaxThreads(2000);

                protocol.setConnectionTimeout(30000);

            }else {

                Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();

                //设置最大连接数

                protocol.setMaxConnections(5000);

                //设置最大线程数

                protocol.setMaxThreads(2000);

                protocol.setConnectionTimeout(30000);

            }

        }

    }

}

上一篇 下一篇

猜你喜欢

热点阅读