秒殺項目性能壓測之定製化內嵌tomcat開發

默認配置不能滿足我們的併發請求,我們需要修改配置來處理併發。修改application.properties文件,內容如下(tomcat配置和服務器配置有關):


server.port=8080

server.tomcat.accept-count=1000

server.tomcat.max-connections=10000

server.tomcat.max-threads=500

server.tomcat.min-spare-threads=100

然後殺掉java進程重新啓動項目

使用命令“pstree -p 9768 | wc -l”查看java項目的線程或進程數

爲了更好的利用資源,保護系統不受客戶端連接拖累,我們新增WebServerConfiguration.java文件


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;

/**

* Created by hzllb on 2019/2/6.

*/

//當Spring容器內沒有TomcatEmbeddedServletContainerFactory這個bean時,會吧此bean加載進spring容器中

@Component

public class WebServerConfiguration implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> {

    @Override

    public void customize(ConfigurableWebServerFactory configurableWebServerFactory) {

            //使用對應工廠類提供給我們的接口定製化我們的tomcat connector

        ((TomcatServletWebServerFactory)configurableWebServerFactory).addConnectorCustomizers(new TomcatConnectorCustomizer() {

            @Override

            public void customize(Connector connector) {

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

                //定製化keepalivetimeout,設置30秒內沒有請求則服務端自動斷開keepalive鏈接

                protocol.setKeepAliveTimeout(30000);

                //當客戶端發送超過10000個請求則自動斷開keepalive鏈接

                protocol.setMaxKeepAliveRequests(10000);

            }

        });

    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章