You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by "Eoghan O'Hare (Jira)" <ji...@apache.org> on 2021/08/24 20:17:00 UTC

[jira] [Commented] (HTTPCLIENT-2172) HttpClient4 limiting to 5 http connections per route, web requests back up in client

    [ https://issues.apache.org/jira/browse/HTTPCLIENT-2172?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17404036#comment-17404036 ] 

Eoghan O'Hare commented on HTTPCLIENT-2172:
-------------------------------------------

Attaching another text file, this has a count of the requests made per second. It compares the number of request per second in our applications logs vs the number of requests per second in the http client logs. It is just an output for a simple grep -c command run on each log file, searching for a particular request string for each second of the load test.

And just to clarify, the requests end up being delayed by multiple seconds by the end of the load test. I am assuming this is because there are not enough http connections created for the load that is being attempted.

Thanks,

Eoghan

[^requests_per_second_applicationlog_vs_httpclientlog.txt]

> HttpClient4 limiting to 5 http connections per route, web requests back up in client
> ------------------------------------------------------------------------------------
>
>                 Key: HTTPCLIENT-2172
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-2172
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>    Affects Versions: 3.1 (end of life), 4.5.13
>         Environment: Axis2 1.7.9
> httpclient-4.5.13.jar
> httpcore-4.4.14.jar
>            Reporter: Eoghan O'Hare
>            Priority: Major
>         Attachments: axis2_httpclient.7z, httpclient4_setup_code.txt, requests_per_second_applicationlog_vs_httpclientlog.txt
>
>
> I am investigating a client side issue under load whereby;
>  # The number of http connections per http route cannot be increased above 5 regardless of what the default maximums are set to
>  # Http POST requests seem to backup in the httpclient and sending of requests is delayed
> The client application is invoking SOAP web services which are implemented in the client using Axis2 auto generated stubs. The web services are asynchronous using Axis2 OperationClient::execute(false).
> The Axis2 ServiceClient is configured to use httpclient4.
> For this load test, there was 1000 web requests sent at a rate of 100 web requests per second. There is one http server being used. That is the RHEL 8 packaged Apache httpd. The server is localhost to the client. 
> The web requests seem to backup in the httpclient, with send delays that increase exponentially. From running tcpdump, I can confirm that a maximum of 5 http connections are created to the http server during the load test.
> I have tried the load test splitting the load across 4 http servers, I can get above 100 total web service requests per second, however once I increase the rates up to 300 web requests per second the same issues start occurring. Makes sense to some degree since 100 web request per second across 4 routes would be only 25 web request per route per second.
> From an implementation point of view, the client application is using the PoolingClientConnectionManager. The default max per route setting is set to be 200, the max total is set to be 1000.
> From our client traces, I can see that there are approximately 100 web service invocations into axis2 per second for the 10 second run. So the client application is making calls into axis2 at the correct rate for the load test.
> I have attached axis2 and httpclient trace level logs from the load test with one http route at 100ws requests per second for simplicity. I tried to attach a tcpdump capture from the test, however Jira would not allow me (size wise, it is only 2.8M).
> Find attached the sample code where;
>  * the connection manager is instantiated
>  * the connection manager settings are configured
>  * the http client instance is created
>  * the http client instance is set as the cached client into axis2 ServiceClient
> We have a production client that is using Apache commons httpclient3 for these web service transmissions. I understand this is end of life, however it is having a similar issue with a limited number of http connections created and a backup of web requests within httpclient/axis.
> I am hoping that you can give some pointers as to how to resolve these issues on both httpclient libraries since the issues are very similar.
> I have been working this issue for a number of weeks, trying lots of different code and configurations, changing axis versions, changing http client versions etc. Any help you can provide would be much appreciated.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org