[
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
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.
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 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
> 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: [email protected]
For additional commands, e-mail: [email protected]