1. 程式人生 > >Mac壓測工具(Siege)記錄.md

Mac壓測工具(Siege)記錄.md

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 -Csiege --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