問題: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
解決:改動httpclient4.idletimeout=<time in ms> 設置成自己認為合理的時間,一般可設置成10-60s(表示連接空暇10s后才會斷開),注意這邊單位是ms。
改動完畢后再次壓測,錯誤不再有了。
*********************************************************
《版權歸作者lzqinfen@126.com全部。請勿亂轉載》
*****************************************相關資料------------------------------------------------------------------------
HTTP無狀態協議和Connection:Keep-Aliveeasy犯的誤區
名詞解釋:
HTTP無狀態:無狀態是指協議對於事務處理沒有記憶能力,server不知道client是什么狀態。從還有一方面講,打開一個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)中設定這個時間
版權聲明:本文博主原創文章,博客,未經同意不得轉載。