HTTP高并发调优小记

Posted AZcode

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP高并发调优小记相关的知识,希望对你有一定的参考价值。

tomcat服务层

1.修改server.xml

<Connector port="8088" protocol="HTTP/1.1"
               maxThreads="1000"
               connectionTimeout="60000"
               acceptCount="1100"
               redirectPort="8443" />

2.修改catalina.bat

set JAVA_OPTS=-Xms1024m -Xmx2048m

Java应用层-Httpclient

1.修改连接池的连接数

static {
    LayeredConnectionSocketFactory sslsf = null;
    try {
      sslsf = new SSLConnectionSocketFactory(SSLContext.getDefault());
    } catch (NoSuchAlgorithmException e) {
      logger.error("创建SSL连接失败");
    }
    Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
        .register("https", sslsf)
        .register("http", new PlainConnectionSocketFactory())
        .build();
    cm = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
    // 设置连接池最大连接数800
    cm.setMaxTotal(800);
    // 设置最大路由数10
    cm.setDefaultMaxPerRoute(10);
  }

2.设置失败重试次数

/**
   * getHttpClient
   * <p>通过连接池管理创建CloseableHttpClient</p>
   * @return
   */
  private static CloseableHttpClient getHttpClient() {
    CloseableHttpClient httpClient = HttpClients.custom()
        .setConnectionManager(cm)
        .setUserAgent(properties.getProperty("userAgent"))
        // 失败重连5次
        .setRetryHandler(new DefaultHttpRequestRetryHandler(5, false))
        .build();
    return httpClient;
  }

3.设置连接超时时长

/**
   * config
   * <p>普通请求配置</p>
   * @param httpRequestBase
   */
  private static void config(HttpRequestBase httpRequestBase) {
    httpRequestBase.setHeader("Accept-Encoding", "gzip,deflate");
    // 配置请求的超时设置
    RequestConfig requestConfig = RequestConfig.custom()
        .setConnectionRequestTimeout(3000)
        .setConnectTimeout(3000)
        .setSocketTimeout(3000)
        .build();
    httpRequestBase.setConfig(requestConfig);
  }

 

以上是关于HTTP高并发调优小记的主要内容,如果未能解决你的问题,请参考以下文章

QT项目性能调优小记

<<高并发系统实战课;; 小记随笔 —— 用户中心案例优化

Java从入门到架构师|高并发|高性能|高可用|分布式|性能调优|设计模式|大型电商项目

Java Web应用高并发性能优化方案汇总

浅谈高并发系统性能调优

没有高并发项目经验,但经常被问高并发性能调优问题怎么办?