默認配置不能滿足我們的併發請求,我們需要修改配置來處理併發。修改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);
}
});
}
}