web-dev-qa-db-ja.com

Jmeterを使用して負荷テストを実行しているときにJava.net.SocketException:接続リセット例外が発生する

アプリケーションのログインページで100人のユーザーのうち100人のユーザーに対して負荷テストを実行しています20人のユーザーが残りの80人のユーザーをパスしています次の例外が発生しました。

Java.net.SocketException: Connection reset
    at Java.net.SocketInputStream.read(Unknown Source)
    at Java.net.SocketInputStream.read(Unknown Source)
    at org.Apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.Java:166)
    at org.Apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.Java:90)
    at org.Apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.Java:281)
    at org.Apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.Java:92)
    at org.Apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.Java:61)
    at org.Apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.Java:254)
    at org.Apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.Java:289)
    at org.Apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.Java:252)
    at org.Apache.http.impl.conn.ManagedClientConnectionImpl.receiveResponseHeader(ManagedClientConnectionImpl.Java:191)
    at org.Apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.Java:300)
    at org.Apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.Java:127)
    at org.Apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.Java:715)
    at org.Apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.Java:520)
    at org.Apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.Java:906)
    at org.Apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.Java:805)
    at org.Apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.Java:505)
    at org.Apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.Java:328)
    at org.Apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.Java:74)
    at org.Apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.Java:1141)
    at org.Apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.Java:1130)
    at org.Apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.Java:431)
    at org.Apache.jmeter.threads.JMeterThread.run(JMeterThread.Java:258)
    at Java.lang.Thread.run(Unknown Source)
10

JMeter 2.10以降の接続リセット? JMeter wikiページで説明されている問題に直面していると思います。 完全に確実テスト中のアプリケーションの動作が正しく、バックエンド側で何も調整または調整する必要がない場合、拒否された接続を再試行して失効した接続を確認するようにJMeterを設定できます。

  1. すべてのHTTPリクエストサンプラーの「実装」をHttpClient4に変更します。それを行う最も簡単な方法は、 HTTP Request Defaults 構成要素を使用することです。
  2. JMeterインストールの/ binフォルダーの下にあるuser.propertiesファイルに次のプロパティを追加します。

    httpclient4.retrycount=1
    hc.parameters.file=hc.parameters
    
  3. 次の行をhc.parametersファイルに追加します(同じ場所、JMeterの/ binフォルダー)

    http.connection.stalecheck$Boolean=true
    
  4. JMeterを再起動します。

「接続リセット」の問題は解消されます。

14
Dmitri T