7
사람은 setMaxPerRoute(max)
및 setMaxTotal(max)
이 HttpComponents PoolingHttpClientConnectionManager 참조에 무엇을 나에게 설명해 주시겠습니까?HttpComponents PoolingHttpClientConnectionManager maxPerRoute 및 maxTotal?
사람은 setMaxPerRoute(max)
및 setMaxTotal(max)
이 HttpComponents PoolingHttpClientConnectionManager 참조에 무엇을 나에게 설명해 주시겠습니까?HttpComponents PoolingHttpClientConnectionManager maxPerRoute 및 maxTotal?
이 설정은 연결 풀 크기를 제어합니다.
setMaxTotal(max)
은 conneciton 풀에 대한 초과 연결 제한을 정의합니다.setMaxPerRoute(max)
은 HTTP 경로 하나당 연결 제한을 정의합니다. 단순한 경우에는 이것을 대상 호스트 당 제한으로 이해할 수 있습니다. 두드러기가 좀 더 재미 있습니다 : HttpClient
은 proxy1 -> proxy2 -> targetHost
과 같이 각각 호스트 체인을 나타내는 HttpRoute
개체를 유지합니다. 연결은 경로별로 풀링됩니다. 간단한 route-building 메커니즘을 사용하고 proxy suport를 제공하지 않는 간단한 경우, 경로에 대상 호스트 만 포함되므로 경로 별 연결 풀 제한이 효과적으로 호스트 별 제한이됩니다.예 :
는 setMaxPerRoute(5)
및 setMaxTotal(20)
있다고 가정합시다. 즉, 모든 대상 호스트에 대해 최대 5 개의 연결 (google.com을 통한 연결 5 개, oracle.com과 5 개의 연결 등)을 동시에 사용할 수 있습니다. 그러나 연결중인 호스트의 수에 관계없이 열린 연결의 총량은 20을 초과 할 수 없습니다.
감사합니다. 매우 도움이되었습니다.
maxPerRoute
에 제한 사항이 있습니까? 약 150 개의 스레드를 사용하여 동일한 웹 사이트 (수만)에서 많은 URL을 요청하려고합니다. – jamesHttpClient 자체가 아니라 클라이언트가 단일 호스트에 150 개의 연결을 가지고 있어도 괜찮습니다. 그러나 서버는 서버 구성에 따라 단일 클라이언트에서 너무 많은 연결을 허용하지 않을 수도 있습니다. – Jk1
불편을 끼쳐 드려 죄송 합니다만 HttpComponents를 직접 사용하십니까? – james