Mac壓測工具(Siege)記錄.md
阿新 • • 發佈:2018-09-13
resp 目前 會話 figure auto pac sta web var 。
微信活動推廣,時常瞬時並發特別高,比如一個百萬粉絲的公眾號,後臺推送一個H5的活動,我們公司的應用在短時間內基本處於不可用的狀態,如何保證高並發下的高可用呢?
Mac下安裝Siege,作為開發人員可進行簡單的模擬高並發,確保服務的可用性,目前容器有Tomcat和IIS,需要分別優化。
一、修改Mac文件描述符限制
在壓測開始前,需要確保open files
足夠大,否則會報Too many open files
錯誤,可以通過ulimit -a
查看,默認是256。
使用ulimit -n 10000
可以修改該值,不過這種修改並不是永久的,關閉終端會話,又會恢復回來。
二、ab
Mac默認預裝了Apache,ab是Apache自帶的壓力測試工具,但是並發數有限,並發數一大就會報錯Connection reset by peer
使用方法:ab -c 並發數 -n 請求數 URL
三、siege
- 安裝方法
下載:http://download.joedog.org/siege/siege-latest.tar.gz
tar -xvf siege-latest.tar.gz
cd siege-4.0.2/
./configure
make
make install
查看配置(可查看配置文件位置):
siege -C
或siege --config
修改配置:
/Users/vipinchan/.siege/siege.conf
- 使用方法:
siege -c 並發數 -t 運行測試時間 URL
這裏要註意的是-t後面的時間要帶單位,s表示秒,如果不帶,就是分鐘。
結果分析:
Transactions: 2755 hits Availability: 70.84 % // 可用率,用100%減去可用率就可以得到錯誤率 Elapsed time: 26.47 secs Data transferred: 0.56 MB Response time: 4.85 secs // 響應時間 Transaction rate: 104.08 trans/sec // web服務器每秒處理的請求數量 Throughput: 0.02 MB/sec // web服務器每秒發送的數據容量 Concurrency: 505.04 Successful transactions: 2755 Failed transactions: 1134 Longest transaction: 16.47 Shortest transaction: 3.06
兩種模式:default 和 benchmark
在default模式下,模擬用戶在發出一個請求後,默認會延遲1秒再發出下一個請求。延遲時間可以在配置文件中修改。default模式適用於負載測試(load testing)。
在benchmark模式下,模擬用戶的請求沒有延遲。在服務器和網絡帶寬允許的條件下,模擬用戶會以最快的速度發出下一個請求。我們可以在命令中加入-b 指定siege以benchmark模式運行。
- 壓測命令
常用參數
-c,並發用戶,默認為10
-r, 運行測試次數。
-t, 測試時間
核心參數
-d,建議配置為“1”,每個請求前的隨機延遲
-i,隨機點擊URL。
-f,選擇一個特定的URLS FILE。
-b,暴力測試,無延遲,查看某個壓力下,資源的變化情況
壓測控制參數
-q,關閉並禁止輸出。
-l,--log [= FILE] LOG到FILE。如果沒有指定FILE,則使用默認值:PREFIX/var/siege.log
定制化參數
-H,--header =“text”添加一個頭來請求(可以是很多)
-A,--user-agent =“text”請求中設置用戶代理
-T,--content-type =“text”在請求中設置Content-Type
- 常用命令
# 200個並發對http://www.google.com發送請求100次
siege -c 200 -r 100 http://www.google.com
# 在urls.txt中列出所有的網址
siege -c 200 -r 100 -f urls.txt
# 隨機選取urls.txt中列出所有的網址
siege -c 200 -r 100 -f urls.txt -i
# delay=0,更準確的壓力測試,而不是功能測試
siege -c 200 -r 100 -f urls.txt -i -b
# 指定http請求頭 文檔類型
siege -H "Content-Type:application/json" -c 200 -r 100 -f urls.txt -i -b
- 註意事項
發送post請求時,url格式為http://www.xxxx.com/ POST p1=v1&p2=v22
如果url中含有空格和中文,要先進行url編碼,否則siege發送的請求url不準確。
參考:
https://www.jianshu.com/p/21b2beb08a8a
Mac壓測工具(Siege)記錄.md