一、ab
Apache HTTP server benchmarking tool
由 Apache 開發的測試工具,除了同廠牌的 Apache HTTP Server 之外,也能測試它牌的網站伺服器效能。
優點是此工具程式的效能極佳,可以輕易測試 1,000+ concurrent users 的測試,報表也算相當清楚。
輸出範例:
ab -n 10240 -c 512 http://localhost/
Concurrency Level: 512
Time taken for tests: 5.658 seconds
Complete requests: 10240
Failed requests: 0
Write errors: 0
Non-2xx responses: 10240
Total transferred: 4874240 bytes
HTML transferred: 2795520 bytes
Requests per second: 1809.94 [#/sec] (mean)
Time per request: 282.883 [ms] (mean)
Time per request: 0.553 [ms] (mean, across all concurrent requests)
Transfer rate: 841.34 [Kbytes/sec] received
常見問題:
Q: socket: Too many open files (24)
需要調整系統的 Open Files Limit 數值。
ulimit -n 8192
Q: apr_socket_recv: Connection reset by peer (104)
調整 Apache2 httpd.conf 的數值。
MaxClients 512
ServerLimit 512
二、siege
Siege is an http load testing and benchmarking utility.
http://www.joedog.org/siege-home/
三、curl-loader
使用 C 語言的 libcurl 函式庫為基礎開發的壓力測試工具,有優異的執行效能,如果硬體環境允許(處理器夠快、記憶體夠大),要模擬上萬個同時連線數量也做得到。
優點是方便用來模擬使用者登入、操作與登出的行為。
http://curl-loader.sourceforge.net/
四、httperf
由 HP 開發的壓力測試工具。
http://www.hpl.hp.com/research/linux/httperf/
可參考這篇教學。
五、http_load
體積很小的壓力測試工具。
http://acme.com/software/http_load/
六、tsung
以 Erlang 語言開發,功能強大的分散式壓力測試工具。支援 HTTP/SSL、WebDAV、SOAP(Web Services)、資料庫(PostgreSQL, MySQL, LDAP)與即時通訊 XMPP/Jabber 等協定,並使用 XML 格式的設定。
http://tsung.erlang-projects.org/
![]() |
Funkload Test Report |
適合 Python 開發者的工具,壓力測試使用 PyUnit 單元測試框架;支援將測試結果利用 gnuplot 繪製成統計圖表。
http://funkload.nuxeo.org/
八、openload
開源的 OpenWebLoad 在 Linux 下執行網站壓力測試,算是簡單易用的工具,但是功能也相對較少。
http://openwebload.sourceforge.net/
![]() |
圖片來源:Introduction to JMeter |
Apache 開發的 Java-based 壓力測試工具,功能十分強大且提供 GUI 設定介面。可以支援分散式的壓力測試,可事先設計好測試步驟(模擬多種使用者行為),並可將結果產生報表或繪製圖表。
http://jmeter.apache.org/
十、blitz.io
簡單好用的「網站壓力測試雲端服務」,註冊後可以獲得免費測試的點數(credits);如果只是進行小型的初步測試,並不需要費用或點數;進行 250+ concurrent users 以上的測試時,就需要扣取點數。
通過本網誌的介紹,已經邀請近百位開發者試用。
Blitz.io 預設使用的測試伺服器,位於北美的機房,所以測試架設於亞洲地區的網站,很容易出現 timeout 的問題(只要 response 時間超過 1000ms 就會 timeout)。所以可以將測試伺服器的地點指定「日本」(--region japan),就可以減少 timeout 頻繁的問題。
-p 0-250:10 --region japan http://company.coooom/
Blitz.io 可以說是最容易使用的壓力測試工具,只要以下步驟:
- 註冊成會員並登入(使用 FB 帳號)
- 填入想要測試的網址
- 依照指示在網站增加 .txt 文件檔(驗證網站是你擁有的)
- 套用預設的參數進行測試
- 調整測試參數取得需要的測試結果
Blitz.io 的測試結果是漂亮的圖形化報表,它也會針對測試結果給予一些分析。由於超過 1000ms 就會被列入 timeout,這個測試結果其實比較「嚴苛」,因為在上線人數較多時,網站延遲 2-3 seconds 回應,應該也算在合理的堪用範圍內。
使用 Blitz.io 的優點是,它是真實從遠方的測試主機進行壓力測試,所以測試結果也包含網路頻寬等因素。如果想要自行建立同樣的測試環境,就需要向 Amazon 租用 EC2 雲端虛擬機器,才能有充足的頻寬和運算資源來進行大量(例如 5,000+)的測試。比起自行建立分散式的測試架構,付點錢給 Blitz.io 是比較簡單的辦法。
免費獲取 Blitz.io 點數的方式,就是邀請其他人加入,所以建議可以早點參加,隨著它的發展愈久功能就會愈多。
立即免費註冊申請:http://blitz.io/gb98nG9v1ZRaN (邀請連結)
延伸閱讀
沒有留言:
張貼留言