簡體   English   中英

Apache Tomcat連接使用JMeter對1000個用戶進行負載測試時拒絕錯誤

[英]Apache Tomcat Connection Refused error while load testing with 1000 users using JMeter

我在linux和Apache Tomcat 7.0.42中部署了一個Java EE應用程序

當我使用JMeter為100個用戶加載測試時,一切正常(並發100個線程請求)

但是一旦我將用戶(或線程數)更改為1000服務器就會被阻塞,並且在~600之后所有請求都會出現“連接被拒絕”錯誤。

我已經完成了應用程序中的所有微調,現在它更像是一個靜態網頁,即使這樣它又會出現錯誤。

服務器配置:Ubuntu,8個vCPU / 32 GB RAM / 960 GB HD

PS:相同的應用程序在AWS(亞馬遜網絡服務)中運行良好,因此您可以排除運行JMeter(客戶端)的計算機的任何問題

    org.apache.http.conn.HttpHostConnectException: Connection to http://a.b.c.d:8080 refused
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:190)
    at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
    at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:645)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:480)
    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.sample(HTTPHC4Impl.java:286)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:62)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1088)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1077)
    at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:428)
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.net.ConnectException: Connection timed out: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:127)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
    ... 12 more

嘗試調整server.xml http連接器的maxThreadsacceptCount屬性:

每個傳入請求在該請求期間需要一個線程。 如果收到的並發請求多於當前可用的請求處理線程可以處理的請求,則將創建其他線程,直到達到配置的最大值( maxThreads屬性的值)。 如果收到更多並發請求,它們將堆疊在連接器創建的服務器套接字內,最多為配置的最大值( acceptCount屬性的值)。 任何進一步的同時請求將收到“連接被拒絕”錯誤,直到資源可用於處理它們。

參考: http//tomcat.apache.org/tomcat-7.0-doc/config/http.html

謝謝你們!!

問題實際上是網絡,當我們使用不同的IP地址(IP欺騙)進行測試時,所有請求都是成功的。 網絡認為這是一次DoS攻擊。

謝謝大家。 我曾嘗試過maxThreads和acceptCount,並在Linux中做了很多調整。

因此,學習是:從位於同一區域的服務器進行性能測試。

可能1000個並發請求(在一秒內)不可實現。 更好的測試是在一段時間內分配1000個並發請求。

例如:圖像顯示在60秒的時間段內執行100個請求,即每秒幾乎兩個請求。

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM