私のプロジェクトの1つでApache HttpClientを使用しています。また、HttpClientとともにPoolingHttpClientConnectionManager
も使用しています。
私はこれらの特性が何を意味するのか混乱しています。コード内のドキュメントを調べてみましたが、これらの変数に関するドキュメントが見つからないため、理解できませんでした。
以下はコードでの使用方法です。
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(5 * 1000).setSocketTimeout(5 * 1000)
.setStaleConnectionCheckEnabled(false).build();
PoolingHttpClientConnectionManager poolingHttpClientConnectionManager = new PoolingHttpClientConnectionManager();
poolingHttpClientConnectionManager.setMaxTotal(200);
poolingHttpClientConnectionManager.setDefaultMaxPerRoute(20);
CloseableHttpClient httpClientBuilder = HttpClientBuilder.create()
.setConnectionManager(poolingHttpClientConnectionManager).setDefaultRequestConfig(requestConfig)
.build();
私がそこにどのような値を入れるべきかを理解して決定できるように、誰かがこれらの特性を私に説明できますか?また、パフォーマンスを向上させるために、上記以外に使用する必要があるプロパティはありますか?
私はhttp-client 4.3.1を使用しています
一部のパラメータは http://hc.Apache.org/httpclient-3.x/preference-api.html で説明されています
その他はソースから収集する必要があります。
すべてのルートで許可される接続の最大数。
SetMaxPerRouteの呼び出しによって別の方法で指定されていないルートに許可されている接続の最大数。事前にルートがわかっている場合はsetMaxPerRouteを使用し、わからない場合はsetDefaultMaxPerRouteを使用します。
タイムアウト例外をスローする前に、リモートサーバーとの接続が確立されるまで待機する時間。
タイムアウト例外をスローする前に、サーバーがさまざまな呼び出しに応答するのを待つ時間。詳細は http://docs.Oracle.com/javase/1.5.0/docs/api/Java/net/SocketOptions.html#SO_TIMEOUT を参照してください。
接続プールから接続をチェックアウトしようとしたときに、例外をスローする前に待機する時間(たとえば、すべての接続がチェックアウトされている場合、接続プールはすぐには返されません)。
潜在的なIOExceptionsを犠牲にして、パフォーマンスをわずかに改善するために無効にすることができます。 http://hc.Apache.org/httpclient-3.x/performance.html#Stale_connection_check を参照してください