Czy ktoś może mi wyjaśnić, co robią setMaxPerRoute(max)
i setMaxTotal(max)
w odniesieniu do HttpComponents PoolingHttpClientConnectionManager?HttpComponents PoolingHttpClientConnectionManager maxPerRoute i maxTotal?
7
A
Odpowiedz
19
Te ustawienia sterują rozmiarem puli połączeń.
setMaxTotal(max)
Definiuje limit połączenia zewnętrznego dla puli połączeń.setMaxPerRoute(max)
definiuje limit połączenia dla jednej trasy HTTP. W prostych przypadkach można to zrozumieć jako limit docelowego hosta. Pod maską rzeczy są nieco bardziej interesujące:HttpClient
utrzymuje kilka obiektówHttpRoute
, które reprezentują łańcuch hostów, takich jakproxy1 -> proxy2 -> targetHost
. Połączenia są łączone w zależności od trasy. W prostych przypadkach, gdy używasz domyślnego mechanizmu budowania trasy i nie zapewniasz obsługi serwerów proxy, twoje trasy prawdopodobnie będą zawierały tylko host docelowy, więc limit puli połączeń na trasie staje się praktycznie limitem na hosta.
Przykład:
Załóżmy, że masz setMaxPerRoute(5)
i setMaxTotal(20)
. Oznacza to, że możesz jednocześnie używać maksymalnie 5 połączeń dla każdego hosta docelowego: 5 połączeń z witryną google.com, kolejne 5 połączeń z oracle.com i tak dalej. Całkowita liczba otwartych połączeń nie może jednak przekroczyć 20, niezależnie od liczby hostów, z którymi się komunikujesz.
Powiązane problemy
- 1. PoolingHttpClientConnectionManager nie zwalnia połączenia
- 2. Silence Debug Logowanie w HTTPComponents
- 3. Jak przekonwertować ciąg na Apache HttpComponents HttpRequest
- 4. Podpisywanie żądań HTTP AWS za pomocą klienta Apache HttpComponents
- 5. Nieważne operandy typu "double" i "int" dla binarnego "operatora%"
- 6. Android - MultipartEntity i zależności
- 7. jNie test działa w środowisku Eclipse, ale kończy się niepowodzeniem w mrówce - java.lang.RuntimeException: Stub
- 8. Serwer HTTP Http i uszkodzone rury
- 9. Potrzebujesz pomocy w identyfikowaniu i naprawianiu SSLPeerUnverifiedException
- 10. Pobieranie pliku za pomocą DefaultHTTPClient i uwierzytelnianie zapobiegawcze
- 11. Dlaczego Math.sqrt (i * i) .floor == i?
- 12. "İ" .toLowerCase()! = "I"
- 13. CSS "i" i "lub"
- 14. UILabel i numberOfLines i sizeToFit:
- 15. Jack i Jill i destinationDir
- 16. Szyny i przecinak i edytor
- 17. Różnica między (++ i) oraz (i ++)
- 18. SOX i zanikanie i zanikanie
- 19. Dlaczego "int i = i;" prawny?
- 20. multidplyr i group_by() i filter()
- 21. atakujących i (handlowe i) operatora
- 22. Zapytanie "i" Linq i "operatory
- 23. kolby i skalowanie i współbieżności
- 24. Dlaczego i = i + 1 jest szybsze niż i ++?
- 25. C++ nowe i usuń i ciąg i funkcje
- 26. DataReader [i] vs DataReader.GetValue (I) vs DataReader.GetString (I)
- 27. CodeIgniter DB Zaptanie gdzie i i .. i jak
- 28. Co oznaczają wyrażenia "? I" i "? -i" w wyrażeniu regularnym?
- 29. i = i ++; jest niezdefiniowany. Czy i = foo (i ++) również jest niezdefiniowane?
- 30. C/C++ wynosi x [i] * y [i ++] zawsze równa x [i] * y [i]
Dziękuję, to było bardzo pomocne. Czy istnieje ograniczenie do
maxPerRoute
? Będę starał się zażądać wielu adresów URL z tej samej strony internetowej (dziesiątki tysięcy) przy użyciu około 150 wątków. – jamesNie w samym HttpClient, to całkiem dobrze, że klient ma 150 połączeń z jednym hostem. Należy jednak pamiętać, że serwer może nie zezwalać na tak wiele połączeń z jednego klienta, który zależy od konfiguracji serwera. – Jk1
Przepraszam, że Cię buguję, ale czy sam używasz HttpComponents? – james