一、用 jmeter 構造 50萬註冊用戶數據, 測試併發 每秒 500,迭代 1000次,在運行到 2-5分鐘時就報錯 :java
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)apache
二、鏈接超時,這個鏈接超時可能出現問題在於 客戶端 和服務端都有可能,先排查加壓機客戶端這邊,在jmeter http請求 頁面,advanced 頁籤, 有 timeout 設置,把 connect 和 response 端都設置爲 30 000 (30s);併發
三、讓請求端 和服務端 的 timeout 爲 30s,從新壓測,這時鏈接超時錯誤率有所下降,可是 tps 比較小,響應時間較長。還須要進行優化。socket
四、這時應考慮是否是jmeter工具自己的問題,經修改 jmeter.properties 中:ide
httpclient4.idletimeout=30000 (延遲 30 s,通常設置爲 10 - 60 s ) 。從新壓測,這時 鏈接超時錯誤率降低爲 10%如下,tps 和 響應時間比原來提升 1倍以上。問題解決!工具
五、繼續往下分析: 若是還出現不少 timeout,那就要開發去排查服務端的問題了,代碼層去分析緣由了。性能