比如我要測試伺服器的連線數最大能達到多少?以前測試的方法是乙個客戶端開啟n個執行緒 (n > 1000 或者2000,3000)
但是並沒有達到測試的效果。
做過一些測試,基本方法是啟動乙個客戶端,通過多個執行緒來同時來連線客戶端,乙個執行緒相當於乙個客戶端連線,執行緒數量是可控制的,設定引數一般為 100,1000,2000,5000 。有一些測試資料,也未曾記錄下來,只是大概了解了下。因為屬於echo模型的,還算穩定,少數執行緒的時候,連續測試幾個小時,基本上不會有問題,但數量達到2000+的時候,有時候會終止,不能繼續首發訊息了,原因可能有多種吧,乙個是執行緒,乙個程序建立太多的執行緒,而且沒有等全部建立完畢再進行訊息收發;另外是環形緩衝,目前的情況下是比較穩定,但也不代表沒有問題,也不是最優;另外就是socket的一些引數可能設定不正確,或者是還有待優化,因為沒有做過大量的效能測試,這方面的經驗也不夠,只是在網上找了些資料,大體如下:
1)測試通訊處理能力:
a)多連線,小資料量測試
客戶端採用多執行緒與server連線,採用多台終端同時與server連線,每台終端同時建立不少於1000個連線,觀察server通訊是否正常
b)常連線、大資料量測試
每個客戶端與server建立一條長連線,同時傳送大資料量資料(如每次1m資料),觀察server能否正確接收
2)資料處理能力
a)每次連線時啟動計時,在一定的時間內觀察server是否正確返回,統計交易成功率
b)碎片包測試:客戶端把乙個完整交易包分割成多個碎片包傳送,觀察server能否正確組合和響應
3)可靠性測試
多台客戶端同時與server連線並自動傳送交易資料,交易資料有單包,多包,碎片等模式,連線通訊7x24小時,統計server的交易成功率。
伺服器壓力測試心得
最近完成了乙個伺服器框架,於是測試的他的qps,發現了乙個奇怪的問題,測試出來qps只有3w s,與前面說的10w s,有很大的差距。使用trace命令列印出glibc函式呼叫資訊,發現了大部分的時間程式處於鎖等待狀態,我開始懷疑認為是內部使用鎖占用太多時間。於是乎改為無鎖佇列。關於無鎖佇列已經記錄...
測試web伺服器的壓力測試程式
以下 是自己寫的乙個測試web伺服器的壓力測試程式,採用epoll多路分發模型,雖然是單執行緒但可以產生足夠的壓力。感興趣的同學可以修改一下測試自己的伺服器程式。include include include include include include include include inclu...
伺服器壓力測試的幾個指標
所謂吞吐率,指的是伺服器處理併發請求的能力,計算公式為 總請求數 完成所有請求花費的總時間 單位是 reqs s 特別需要注意的是,吞吐率不能脫離併發數 併發使用者數 而單獨存在,在不同的併發數情況下,即使總請求數一樣,併發數也可能會不一樣 併發連線數指某個時刻伺服器處理的連線數 此概念的某個時刻是...