--- tags: Unix-like --- [] # ab ApacheBench,測試網站效能的指令。 ```shell $ ab <URL> ``` * `-n` :Request 總數量 * `-c` :Concurrency 同時間的數量 ```shell $ ab https://www.google.com/ This is ApacheBench, Version 2.3 <$Revision: 1826891 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking www.google.com (be patient).....done Server Software: gws Server Hostname: www.google.com Server Port: 443 SSL/TLS Protocol: TLSv1.2,ECDHE-ECDSA-CHACHA20-POLY1305,256,256 TLS Server Name: www.google.com Document Path: / Document Length: 12314 bytes Concurrency Level: 1 Time taken for tests: 0.139 seconds Complete requests: 1 Failed requests: 0 Total transferred: 13151 bytes HTML transferred: 12314 bytes Requests per second: 7.18 [#/sec] (mean) Time per request: 139.370 [ms] (mean) Time per request: 139.370 [ms] (mean, across all concurrent requests) Transfer rate: 92.15 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 99 99 0.0 99 99 # 從 ab 發出 TCP 要求到 Web 主機所花費的建立時間 Processing: 40 40 0.0 40 40 # 從 TCP 連線建立後,直到 HTTP 回應 Response 的資料全部都收到所花的時間 Waiting: 37 37 0.0 37 37 # 從發送 HTTP 要求完後,到 HTTP 回應 Response 第一個 Byte 所等待的時間 Total: 139 139 0.0 139 139 # Connect + Processing ``` ## 壓力測試 * **排除頻寬的限制** 做壓力測試通常不會考量「頻寬的限制」,所以一般來說不會將測試的主機擺在遠端機房、然後測試程式擺在公司內部的主機,而是會將壓力測試的 Client 跟 Web 主機擺在同一個網段下進行壓力測試。 因為「頻寬」只要花錢就會有了,但是主機的承載量卻是有限的,從遠端進行壓力測試主要的限制是在「頻寬」而非「效能」,所以從遠端單點進行壓力測試毫無任何意義可言,這樣是測不出主機的效能極限的。 如果你有能力與資源進行大規模(多點)壓力測試的話,透過遠端進行壓力測試才有意義。 * **壓力要循序漸進** 不要一下子就執行同時連線數 100 人,而是要循序漸進的慢慢加同時連線數上去,才不會讓 Web Application 一下字承受過大的負載而導致效能的數據不正確。 * **大量時採用多台測試** 需要測試大量或超大量的要求數時,建議是採用多部電腦來同時使用 ab 指令要求,否則,只用一台的情況下,很可能因為機器本身的效能問題,而無法真正的送出預期的要求數量而造成測試失真。