JMeter一個錯誤the target server failed to respond--JMeter坑


問題:1、在測試一個http景象,特別是集波動TPS時刻,出現了一個錯誤。它現在是一個必須錯誤(壓力順利時卻零星的錯誤,甚至很少見);



每次必現錯誤(開始一直懷疑是網絡或程序的問題)


  2、失敗事務報錯信息例如以下,我遇到的是以下的那種

  • Socket closed
  • Non HTTP response code: org.apache.http.NoHttpResponseException (the target server failed to respond)

資料查詢:https://wiki.apache.org/jmeter/JMeterSocketClosed

問題原因:在JMeter下,發送http 請求時,一般都是默認選擇了use keepAlive(這個是什么?看后面資料),這個是連接協議,JMeter坑就在這里,默認勾選了這個(假設不勾選的話,也不會保存)。但其配置JMeter.properties中的時間設置默認卻是注銷的,也是是說,不會等待,一旦連接空暇,則立刻斷開了,導致我們壓測中出現了事務失敗的情形。

解決:改動httpclient4.idletimeout=<time in ms> 設置成自己認為合理的時間,一般可設置成10-60s(表示連接空暇10s后才會斷開),注意這邊單位是ms。

改動完畢后再次壓測,錯誤不再有了。


*********************************************************

《版權歸作者lzqinfen@126.com全部。請勿亂轉載》

*****************************************相關資料------------------------------------------------------------------------

HTTP無狀態協議和Connection:Keep-Aliveeasy犯的誤區

名詞解釋:
HTTP無狀態:無狀態是指協議對於事務處理沒有記憶能力,server不知道client是什么狀態。從還有一方面講,打開一個server上的網頁和你之前打開這個server上的網頁之間沒有不論什么聯系
假設你要實現一個購物車。須要借助於Cookie或Session或server端API(如NSAPI and ISAPI)記錄這些信息,請求server結算頁面時同一時候將這些信息提交到server
當你登錄到一個站點時,你的登錄狀態也是由Cookie或Session來“記憶”的,由於server並不知道你是否登錄
長處:server不用為每一個client連接分配內存來記憶大量狀態,也不用在client失去連接時去清理內存。以更高效地去處理WEB業務
缺點:client的每次請求都須要攜帶對應參數。server須要處理這些參數
 
Keep-Alive:參考另外一篇文章HTTP Keep-Alive 具體解釋
 
easy犯的誤區:
1、HTTP是一個無狀態面向連接的協議。無狀態不代表HTTP不能保持TCP連接,更不能代表HTTP使用的是UDP協議(無連接)
2、從HTTP/1.1起。默認都開啟了Keep-Alive。保持連接特性,簡單地說。當一個網頁打開完畢后,client和server之間用於傳輸HTTP數據的TCP連接不會關閉,假設client再次訪問這個server上的網頁,會繼續使用這一條已經建立的連接
3、Keep-Alive不會永久保持連接,它有一個保持時間。能夠在不同的server軟件(如Apache)中設定這個時間
 

版權聲明:本文博主原創文章,博客,未經同意不得轉載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM