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);
  }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM