[ 
https://issues.apache.org/jira/browse/HTTPCLIENT-2172?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Eoghan O'Hare updated HTTPCLIENT-2172:
--------------------------------------
    Description: 
I am investigating a client side issue under load whereby;
 # The number of http connections per http route cannot be increased above 5
 # Http POST requests seem to backup in the httpclient and requests are delayed 
being sent

The client application is invoking SOAP web services which are implemented in 
the client using Axis2 auto generated stubs. 

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 see 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 to get 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.

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 have tried to 
attach a tcpdump capture from that 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 they 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.

  was:
I am investigating a client side issue under load whereby;
 # The number of http connections per http route cannot be increased above 5
 # Http POST requests seem to backup in the httpclient and requests are delayed 
being sent

The client application is invoking SOAP web services which are implemented in 
the client using Axis2 auto generated stubs. 

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 request send delays 
that increase exponentially. From running tcpdump, I can see 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 to get 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.

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 have tried to 
attach a tcpdump capture from that 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 they 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.


> 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
>
>
> I am investigating a client side issue under load whereby;
>  # The number of http connections per http route cannot be increased above 5
>  # Http POST requests seem to backup in the httpclient and requests are 
> delayed being sent
> The client application is invoking SOAP web services which are implemented in 
> the client using Axis2 auto generated stubs. 
> 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 see 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 to get 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.
> 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 have tried to 
> attach a tcpdump capture from that 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 they 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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to