性能壓測之:構造墊底數據,出現的坑

1、用 jmeter 構造 50萬註冊用戶數據, 測試併發 每秒 500,迭代 1000次,在運行到 2-5分鐘時就報錯 :

org.apache.http.conn.HttpHostConnectException: Connect to mall.weilaijishi.cn:80 [mall.weilaijishi.cn/47.111.51.188] failed: Connection timed out: connect
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:159)
at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl$JMeterDefaultHttpClientConnectionOperator.connect(HTTPHC4Impl.java:331)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:373)
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:394)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:832)
at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:570)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:67)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1231)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1220)
at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:622)
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:546)
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253)
at java.lang.Thread.run(Unknown Source)
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(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)




























2、連接超時,這個連接超時可能出現問題在於 客戶端 和服務端都有可能,先排查加壓機客戶端這邊,在jmeter http請求 頁面,advanced 頁籤, 有 timeout 設置,把 connect 和 response 端都設置爲 30 000 (30s);

性能壓測之:構造墊底數據,出現的坑

3、讓請求端 和服務端 的 timeout 爲 30s,重新壓測,這時連接超時錯誤率有所降低,但是 tps 比較小,響應時間較長。還需要進行優化。

4、這時應考慮是不是jmeter工具本身的問題,經修改 jmeter.properties 中:

httpclient4.idletimeout=30000 (延遲 30 s,一般設置爲 10 - 60 s ) 。重新壓測,這時 連接超時錯誤率下降爲 10%以下,tps 和 響應時間比原來提高 1倍以上。問題解決!

5、繼續往下分析: 如果還出現很多 timeout,那就要開發去排查服務端的問題了,代碼層去分析原因了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章