On Thu, 2008-10-23 at 18:43 +0200, Furmaniak Christophe wrote:
> Hi,
>
> we've developped a web application performance tool. Our product intensivly
> uses httpclient (currently 3.1) to measure response time of these web
> applications (single url or sequence of url to copy a human being navigation).
>
> The main principle of our tool is to perform the same requests at a fixed
> frequency (5 minutes most of the times) to be able to compute Service Level
> Agreements.
>
> We've detected some "strange" behaviours on some monitors (=sequence of url
> request retreived with httpclient). Sometimes (1% of the executions), some
> requests take more time (like 3 sec instead of 100ms) to be performed.
>
> We cannot say for sure for the moment that the network elements of the
> architecture are not concerned but let's assume first that our problems are
> not network related (and I'm not saying that the guilty part is httpclient
> ;], if you can help me to find the proof that it's network related, let's go!)
>
> Logs have been added on the web server side (apache) using a %D in the
> LogFormat specification. The response times measured on apache side don't
> match the ones we get using httpclient, not even closer (we see 3 seconds on
> httpclient side, we see less that 1 ms on apache side).
>
> We've traced the httpclient call and we've been able to detect 2 different
> behaviours:
>
> the first one occurs during the connection opening, inside
> HttpConnection.open() call. I've added the "OPENED" trace that comes just
> after the isOpen=true.
>
> =============================
> isOpen = true;
> if (LOG.isDebugEnabled()) {
> LOG.debug("connection to " + host + ":" + port + "
> OPENED");
> }
> =============================
>
> our logs:
> ==============================
> [DEBUG] [22/10/08 12:38:26.250] [httpclient.HttpConnection]<7747> Open
> connection to 160.92.110.240:443 (HttpConnection.java:717)
> [DEBUG] [22/10/08 12:38:29.246] [httpclient.HttpConnection]<7747> connection
> to 160.92.110.240:443OPENED (HttpConnection.java:771)
> ==============================
>
> I'm aware that there can be a lot of reason why the HttpConnection.open()
> lasts so long, but does it exist explanation NOT related to network only
> issues?
>
>
>
> the second one occurs during the flush of the request OutputStream
>
> ==============================
> [DEBUG] [22/10/08 14:00:26.234] [httpclient.HttpConnection]<16536> enter
> HttpConnection.flushRequestOutputStream() (HttpConnection.java:851)
> [DEBUG] [22/10/08 14:00:29.240] [httpclient.HttpConnection]<16536> leaving
> HttpConnection.flushRequestOutputStream() (HttpConnection.java:854)
> ==============================
>
> my modifications are:
> ==============================
> public void flushRequestOutputStream() throws IOException {
> LOG.trace("enter HttpConnection.flushRequestOutputStream()");
> assertOpen();
> outputStream.flush();
> LOG.trace("leaving HttpConnection.flushRequestOutputStream()");
> }
> ==============================
>
> what can explain such a long time to flush the request OutputStream?
> Am I wrong or does this output stream only "contains" the request built by
> httpclient? That would mean that the web server is taking a (too) long time
> to accept the request?
>
>
> some more details: we have these behaviours using different hosts for our
> performance tool, so we can assume that these response times are not related
> to the load of the host that is running the httpclient.
>
Christophe,
HttpClient has no control over TCP/IP connections other than
java.net.Socket API provided by JRE. The problem can be related to the
particular JVM implementation, OS, network configuration, or all
combined.
Oleg
> Thanks for reading :)
>
> Christophe
>
> ________________________________
>
> Ce message et les pi?ces jointes sont confidentiels et r?serv?s ? l'usage
> exclusif de ses destinataires. Il peut ?galement ?tre prot?g? par le secret
> professionnel. Si vous recevez ce message par erreur, merci d'en avertir
> imm?diatement l'exp?diteur et de le d?truire. L'int?grit? du message ne
> pouvant ?tre assur?e sur Internet, la responsabilit? du groupe Atos Origin ne
> pourra ?tre recherch?e quant au contenu de ce message. Bien que les meilleurs
> efforts soient faits pour maintenir cette transmission exempte de tout virus,
> l'exp?diteur ne donne aucune garantie ? cet ?gard et sa responsabilit? ne
> saurait ?tre recherch?e pour tout dommage r?sultant d'un virus transmis.
>
> This e-mail and the documents attached are confidential and intended solely
> for the addressee; it may also be privileged. If you receive this e-mail in
> error, please notify the sender immediately and destroy it. As its integrity
> cannot be secured on the Internet, the Atos Origin group liability cannot be
> triggered for the message content. Although the sender endeavours to maintain
> a computer virus-free network, the sender does not warrant that this
> transmission is virus-free and will not be liable for any damages resulting
> from any virus transmitted.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]