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