On 14/03/07, Oleg Kalnichevski <[EMAIL PROTECTED]> wrote:
On Wed, 2007-03-14 at 16:47 +0000, sebb wrote: > I've been running some stress tests on JMeter using HTTPClient and > Java HTTP. [Mainly the idea is to try and find synch etc problems in > JMeter.] > > Every so often, the HTTPClient test reports SocketExceptions - mostly > Connection reset, but sometimes Invalid argument (about 15% of the > errors). > > The percentage of Socket errors is quite low - 0.5% or less - however > I don't see any errors at all with the Java implementation. > > This is running on a 4 CPU Alpha, Java 1.4.2, Apache httpd 150 > clients, JMeter 140 threads, single GET per thread, looped 1000 times. > > The same errors happen, but less frequently, with fewer JMeter threads. > > It's not a show-stopper, but I would be interested to know if there is > a known cause for this difference in behaviour? > > Sample stack traces (" at " has been removed): > > java.net.SocketException: Connection reset > java.net.SocketInputStream.read(SocketInputStream.java:168) > java.io.BufferedInputStream.fill(BufferedInputStream.java:183) > java.io.BufferedInputStream.read(BufferedInputStream.java:201) > org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78) > org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106) > org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1116) > org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1969) > org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1727) > org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1090) > org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398) > org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171) > org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) > org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323) > > and > > java.net.SocketException: invalid argument > java.net.SocketInputStream.socketRead0(Native Method) > java.net.SocketInputStream.read(SocketInputStream.java:147) > java.io.BufferedInputStream.fill(BufferedInputStream.java:183) > java.io.BufferedInputStream.read(BufferedInputStream.java:201) > org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78) > org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106) > org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1116) > org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1969) > org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1727) > org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1090) > org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398) > org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171) > org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) > org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323) > > S/// >Sebastian, In both cases an exception was thrown while HttpClient was waiting for a response status line, which seems to indicate a server side problem in my opinion.
There are a few errors logged by Apache, but not nearly as many as I would expect, though I guess I'd need to see when they occurred in relation to the client failures.
'Connection reset' usually means the connection was unexpectedly closed by the peer. In your case the server appears to have dropped connection on the unsuspecting HttpClient before sending back a response most likely due to the high load. You are not seeing this kind of exceptions with Java HTTP connection because the damn thing simply silently retries failed requests as it sees fit (at least that was the case when I last worked with Java HTTP connection, which admittedly was a long time ago)
Does HTTPClient not retry? There seems to be some retry code, but I did not follow it through to see if it applied in this case. If so, maybe I could try increasing the retry count. S --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
