秒杀项目性能压测之定制化内嵌tomcat开发

2020-09-25  本文已影响0人  小石读史
image

默认配置不能满足我们的并发请求,我们需要修改配置来处理并发。修改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

image

然后杀掉java进程重新启动项目

image

使用命令“pstree -p 9768 | wc -l”查看java项目的线程或进程数

image image

为了更好的利用资源,保护系统不受客户端连接拖累,我们新增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);

            }

        });

    }

}

上一篇 下一篇

猜你喜欢

热点阅读