[
https://issues.apache.org/jira/browse/HTTPCLIENT-2007?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Venu Kemthur closed HTTPCLIENT-2007.
------------------------------------
Resolution: Invalid
Invalid issue; TLS connection not being re-used which led to degraded
performance.
> Performance Issue with Pooled Connection Manager + Custom socket factory
> -------------------------------------------------------------------------
>
> Key: HTTPCLIENT-2007
> URL: https://issues.apache.org/jira/browse/HTTPCLIENT-2007
> Project: HttpComponents HttpClient
> Issue Type: Bug
> Components: HttpClient (classic)
> Affects Versions: 4.5.9
> Reporter: Venu Kemthur
> Priority: Major
>
> We are using HttpClient 4.5.9 to connect to a service which expects Client
> Cert (MTLS)
> Since we are using PoolingHttpClientConnectionManager, had to use the
> following mechanism to create and set a LayeredConnectionSocketFactory when
> instantiating PoolingHttpClientConnectionManager
> {code:java}
> ConnectionSocketFactory plainsf = <...>
> LayeredConnectionSocketFactory sslsf = <...>
> Registry<ConnectionSocketFactory> r =
> RegistryBuilder.<ConnectionSocketFactory>create()
> .register("http", plainsf)
> .register("https", sslsf)
> .build();
> HttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(r);
> HttpClients.custom()
> .setConnectionManager(cm)
> .build();{code}
> Tested this service with K6 load testing tool and see latency in seconds.
> Seems like it keeps growing from milliseconds (20ms) all the way to 8 seconds.
> K6 in a minute could only do 45 QPS with this latency.
> Sample run
> {code:java}
> data_received..............: 1.6 MB 27 kB/s
> data_sent..................: 6.9 MB 115 kB/s
> http_req_blocked...........: avg=8.92ms min=1µs med=3µs max=424.79ms
> p(90)=6µs p(95)=13µs
> http_req_connecting........: avg=1.42ms min=0s med=0s max=46.53ms p(90)=0s
> p(95)=0s
> http_req_duration..........: avg=2.1s min=57.25ms med=2.11s max=5.96s
> p(90)=4.1s p(95)=4.22s
> http_req_receiving.........: avg=71.79µs min=23µs med=55µs max=6.19ms
> p(90)=89µs p(95)=102µs
> http_req_sending...........: avg=25.37µs min=9µs med=20µs max=2.38ms
> p(90)=35µs p(95)=43µs
> http_req_tls_handshaking...: avg=7.49ms min=0s med=0s max=385.7ms p(90)=0s
> p(95)=0s
> http_req_waiting...........: avg=2.1s min=57.18ms med=2.11s max=5.96s
> p(90)=4.1s p(95)=4.22s
> http_reqs..................: 2721 45.349907/s
> iteration_duration.........: avg=2.11s min=64.04ms med=2.11s max=6.12s
> p(90)=4.11s p(95)=4.22s
> iterations.................: 2721 45.349907/s
> vus........................: 100 min=100 max=100
> vus_max....................: 100 min=100 max=100{code}
> Same code when replaced with JDK 11 HttpClient could do 600 QPS!
> We are using this client in other scenarios (non-MTLS) and we have no issues
> in that path.
> Is there a known issue with *Pooling Connection Manager*
> +*SSLConnectionSocketFactory*
--
This message was sent by Atlassian JIRA
(v7.6.14#76016)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]