如何使用siege測試伺服器效能
siege是一款開源的壓力測試工具,可以根據配置對一個WEB站點進行多使用者的併發訪問,記錄每個使用者所有請求過程的相應時間,並在一定數量的併發訪問下重複進行。
1 安裝
# make sure you have the ssl libs installed(http://digitalleafblower.com/?p=166)
yum install mod_ssl openssl
git clone https://github.com/JoeDog/siege.git
cat INSTALL # 步驟
./utils/bootstrap
./configure --with-ssl=/usr/bin/openssl
make
make install
export PATH=$PATH:/usr/local/bin
驗證:siege -V
2 get請求測試:
siege -c 100 -r 10 -f someScript.url
-c是併發量,-r是重複次數。併發量乘重複次數就是總的請求次數。
url檔案就是一個文字,每行都是一個url,它會從裡面隨機訪問的。
類似ab的純併發壓力測試:
siege -c 100 -r 10 http://www.google.com
(http://www.blogjava.net/iamtin/archive/2007/10/24/how_to_use_siege.html)
測試tornado程式效能:
$ siege -c 1000 -t 10s 'http://mysite.cn:8090'
xxx
Lifting the server siege...
Transactions: 4191 hits
Availability: 100.00 %
Elapsed time: 9.12 secs
Data transferred: 871.92 MB
Response time: 0.50 secs
Transaction rate: 459.54 trans/sec
Throughput: 95.60 MB/sec
Concurrency: 231.10
Successful transactions: 4203
Failed transactions: 0
Longest transaction: 6.56
Shortest transaction: 0.04
3 post請求測試
siege -c 500 -r 1 '10.23.54.151:19595/v1/db/nova/service_get_all POST <./postfile.json
content_type被正確設定為application/json,伺服器正常處理返回。原來siege只能通過檔案的副檔名來確定content type格式
(http://blog.csdn.net/xuriwuyun/article/details/12711927)
# 預設Content-type: application/x-www-form-urlencoded
# -g GET, pull down HTTP headers and display the transaction.
siege -c 1000 -t 10s 'http://mysite.cn:8090/login-is POST node=xxx&password=xxx' -g
# map the file extension to the appropriate content-type
# Content-type: application/json
siege -c 10 "http://mysite:8001/query_code POST <./querycode.json" -t 10s
4 其他web壓力測試工具
siege簡單易用,其缺點在於統計結果過於粗糙。
如果想知道請求的平均時間、連線、處理、等待時間等資訊,可以用apache自帶的AB工具(Apache Benchmark)
# 163yum源
cd /etc/yum.repos.d
#備份系統自帶的yum源
mv CentOS-Base.repo CentOS-Base.repo.bk
#下載163網易的yum源:
#centos7.x:
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
#centos6.x:
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
#更新完yum源後,執行下邊命令更新yum配置,使操作立即生效
yum makecache
ref(https://yq.aliyun.com/ziliao/115638)
安裝好Apache,就自帶AB了yum install httpd
引數很多,一般我們用 -c 和 -n 引數就可以了. 例如:
./ab -c 1000 -n 1000 http://127.0.0.1/index.php
輸出的關鍵引數包括但不限於:
Requests per second: 122.12 [#/sec] (mean)
//大家最關心的指標之一,相當於 LR 中的 每秒事務數 ,後面括號中的 mean 表示這是一個平均值
Time per request: 8188.731 [ms] (mean)
//大家最關心的指標之二,相當於 LR 中的 平均事務響應時間 ,後面括號中的 mean 表示這是一個平均值
Time per request: 8.189 [ms] (mean, across all concurrent requests)
//每個請求實際執行時間的平均值
Transfer rate: 162.30 [Kbytes/sec] received
//平均每秒網路上的流量,可以幫助排除是否存在網路流量過大導致響應時間延長的問題
Connection Times (ms)
min mean[+/-sd] median max // 最小值、平均數、中位數、最大值
Connect: 4 646 1078.7 89 3291
Processing: 165 992 493.1 938 4712
Waiting: 118 934 480.6 882 4554
Total: 813 1638 1338.9 1093 7785
【使用siege測試案例】
主流PHP框架效能非權威測試
作為一個PHP開發者,而且是初創企業團隊的技術開發者,選擇開發框架是個很艱難的事情。
用ThinkPHP的話,招聘一個剛從培訓機構出來的開發者就可以上手了,但是效能和後期程式碼解耦是個讓人頭疼的事情。不過很多第三方功能不需要自己寫,眾多大牛已經給鋪好路了。
用Laravel的話,傳說寫起來很爽擴充套件性也夠,但是學習成本有點高,總不能給初級開發者半個月的時間去學習框架吧。而且據說江湖人士透漏,Laravel效能不怎麼樣,文件也並不是特別豐富。
用Yii的話,語法有點囉嗦,前後端程式碼分離有點小麻煩,不過效能是非常好的,而且已經有眾多國內大公司在使用了,出現意外可以快速的找到大牛答疑解惑。
不如做個簡單的效能評測,選個效能出色的總不會出錯
效能測試
測試時間: 2016年05月06日
測試工具: siege (因為MAC系統的ab總是會出現 pr_socket_recv: Connection reset by peer (54) 的錯誤,所以選擇了siege)
測試機器: MacPro Core i5 處理器/8GB記憶體/256GB SSD快閃記憶體
測試環境: Apache PHP5.6
框架版本: ThinkPHP 3.2.3 Laravel 5.2 Yii2.0.5
測試原則: 每次測試迴圈5次,取中等資料
補充說明:所有專案都是讓在子目錄中
結果說明
Transactions: 2119 hits 處理請求總數量
Availability: 96.85 % 可用性
Elapsed time: 9.74 secs 執行時間
Data transferred: 1.31 MB 資料傳輸量
Response time: 0.60 secs 響應時間
Transaction rate: 217.56 trans/sec 每秒處理效率
Throughput: 0.13 MB/sec 每秒處理資料
Concurrency: 130.28 併發
Successful transactions: 2162 成功的請求
Failed transactions: 69 失敗的請求
Longest transaction: 2.85 最長的單個請求
Shortest transaction: 0.01 最短的單個請求
開始測試
相關文章
- 效能測試工具 - Siege
- 如何測試伺服器效能?伺服器
- HTTP/FTP壓力測試工具siegeHTTPFTP
- 【效能測試】使用ab做Http效能測試HTTP
- 伺服器的效能測試伺服器
- web伺服器效能測試Web伺服器
- Web伺服器效能壓力測試工具使用教程Web伺服器
- 【PG效能測試】pgbench效能測試工具簡單使用
- Jmeter效能測試 —— jmeter之使用ServerAgent監控伺服器JMeterServer伺服器
- 如何測試伺服器伺服器
- 使用sysbench測試Mysql效能MySql
- YCSB效能測試工具使用
- 使用 fio 工具測試 EBS 效能
- http 效能測試 wrk使用教程HTTP
- 使用 sysbench 測試 MySQL 的效能MySql
- Jmeter效能測試簡單使用JMeter
- Linux伺服器效能壓力測試Linux伺服器
- 伺服器效能測試典型工具介紹伺服器
- 如何測試伺服器的速度伺服器
- 伺服器的速度如何測試伺服器
- 伺服器如何測試穩定性伺服器
- 雲伺服器效能該如何檢測?伺服器
- 效能測試中伺服器關鍵效能指標淺析伺服器指標
- 使用profiler測試Oracle PL/SQL效能OracleSQL
- JMeter效能測試工具使用入門JMeter
- 使用 sysbench 測試 MySQL 的效能(二)MySql
- 【java】使用jprofiler進行效能測試Java
- 效能測試
- 效能測試:分散式測試分散式
- Jmeter介面測試+效能測試JMeter
- 移動app效能測試有哪些需要進行?效能測試報告如何收費?APP測試報告
- 微服務測試之效能測試微服務
- 效能測試之測試指標指標
- 測試開發之效能篇-效能測試設計
- Jmeter效能測試:高併發分散式效能測試JMeter分散式
- 網路效能測試工具iperf的使用
- 使用 Benchmark.NET 測試程式碼效能
- 使用lmbench測試linux效能-編譯Linux編譯