root@platform-adsproxyapi-deployment-5dd7fbfbc7-x7cgl:/app# apt-get install apache2-utils Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: libapr1 libaprutil1 The following NEW packages will be installed: apache2-utils libapr1 libaprutil1 0 upgraded, 3 newly installed, 0 to remove and 22 not upgraded. Need to get 400 kB of archives. After this operation, 905 kB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://mirrors.163.com/debian stretch/main amd64 libapr1 amd64 1.5.2-5 [96.6 kB] Get:2 http://mirrors.163.com/debian stretch/main amd64 libaprutil1 amd64 1.5.4-3 [85.8 kB] Get:3 http://mirrors.163.com/debian-security stretch/updates/main amd64 apache2-utils amd64 2.4.25-3+deb9u9 [218 kB] Fetched 400 kB in 11s (34.7 kB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libapr1:amd64. (Reading database ... 22004 files and directories currently installed.) Preparing to unpack .../libapr1_1.5.2-5_amd64.deb ... Unpacking libapr1:amd64 (1.5.2-5) ... Selecting previously unselected package libaprutil1:amd64. Preparing to unpack .../libaprutil1_1.5.4-3_amd64.deb ... Unpacking libaprutil1:amd64 (1.5.4-3) ... Selecting previously unselected package apache2-utils. Preparing to unpack .../apache2-utils_2.4.25-3+deb9u9_amd64.deb ... Unpacking apache2-utils (2.4.25-3+deb9u9) ... Setting up libapr1:amd64 (1.5.2-5) ... Processing triggers for libc-bin (2.24-11+deb9u4) ... Setting up libaprutil1:amd64 (1.5.4-3) ... Setting up apache2-utils (2.4.25-3+deb9u9) ... Processing triggers for libc-bin (2.24-11+deb9u4) ... root@platform-adsproxyapi-deployment-5dd7fbfbc7-x7cgl:/app# ab -n 1000 ab: wrong number of arguments Usage: ab [options] [http[s]://]hostname[:port]/path Options are: -n requests Number of requests to perform -c concurrency Number of multiple requests to make at a time -t timelimit Seconds to max. to spend on benchmarking This implies -n 50000 -s timeout Seconds to max. wait for each response Default is 30 seconds -b windowsize Size of TCP send/receive buffer, in bytes -B address Address to bind to when making outgoing connections -p postfile File containing data to POST. Remember also to set -T -u putfile File containing data to PUT. Remember also to set -T -T content-type Content-type header to use for POST/PUT data, eg. 'application/x-www-form-urlencoded' Default is 'text/plain' -v verbosity How much troubleshooting info to print -w Print out results in HTML tables -i Use HEAD instead of GET -x attributes String to insert as table attributes -y attributes String to insert as tr attributes -z attributes String to insert as td or th attributes -C attribute Add cookie, eg. 'Apache=1234'. (repeatable) -H attribute Add Arbitrary header line, eg. 'Accept-Encoding: gzip' Inserted after all normal header lines. (repeatable) -A attribute Add Basic WWW Authentication, the attributes are a colon separated username and password. -P attribute Add Basic Proxy Authentication, the attributes are a colon separated username and password. -X proxy:port Proxyserver and port number to use -V Print version number and exit -k Use HTTP KeepAlive feature -d Do not show percentiles served table. -S Do not show confidence estimators and warnings. -q Do not show progress when doing more than 150 requests -l Accept variable document length (use this for dynamic pages) -g filename Output collected data to gnuplot format file. -e filename Output CSV file with percentages served -r Don't exit on socket receive errors. -m method Method name -h Display usage information (this message) -I Disable TLS Server Name Indication (SNI) extension -Z ciphersuite Specify SSL/TLS cipher suite (See openssl ciphers) -f protocol Specify SSL/TLS protocol (TLS1, TLS1.1, TLS1.2 or ALL) root@platform-adsproxyapi-deployment-5dd7fbfbc7-x7cgl:/app# ab -n 1000 -c 2 http://platform-adsproxyapi/api/Ops/TestProxy This is ApacheBench, Version 2.3 <$Revision: 1757674 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking platform-adsproxyapi (be patient) Completed 100 requests Completed 200 requests Completed 300 requests Completed 400 requests Completed 500 requests Completed 600 requests Completed 700 requests Completed 800 requests Completed 900 requests Completed 1000 requests Finished 1000 requests Server Software: Kestrel Server Hostname: platform-adsproxyapi Server Port: 80 Document Path: /api/Ops/TestProxy Document Length: 95 bytes Concurrency Level: 2 Time taken for tests: 226.142 seconds Complete requests: 1000 Failed requests: 832 (Connect: 0, Receive: 0, Length: 832, Exceptions: 0) Total transferred: 269848 bytes HTML transferred: 85848 bytes Requests per second: 4.42 [#/sec] (mean) Time per request: 452.283 [ms] (mean) Time per request: 226.142 [ms] (mean, across all concurrent requests) Transfer rate: 1.17 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 1.0 0 25 Processing: 65 452 871.9 86 3337 Waiting: 65 451 872.0 86 3337 Total: 65 452 871.9 86 3337 Percentage of the requests served within a certain time (ms) 50% 86 66% 97 75% 109 80% 131 90% 1449 95% 3032 98% 3107 99% 3191 100% 3337 (longest request) root@platform-adsproxyapi-deployment-5dd7fbfbc7-x7cgl:/app#
linux 下ab壓力測試
1.ab的簡介
ab是apachebench命令的縮寫。
ab是apache自帶的壓力測試工具。ab非常實用,它不僅可以對apache服務器進行網站訪問壓力測試,也可以對或其它類型的服務器進行壓力測試。比如nginx、tomcat、IIS等
2.ab的原理
ab的原理:ab命令會創建多個並發訪問線程,模擬多個訪問者同時對某一URL地址進行訪問。它的測試目標是基於URL的,因此,它既可以用來測試apache的負載壓力,也可以測試nginx、lighthttp、tomcat、IIS等其它Web服務器的壓力。
ab命令對發出負載的計算機要求很低,它既不會占用很高CPU,也不會占用很多內存。但卻會給目標服務器造成巨大的負載,其原理類似CC攻擊。自己測試使用也需要注意,否則一次上太多的負載。可能造成目標服務器資源耗完,嚴重時甚至導致死機。
3.ab的安裝
yum -y install httpd-tools
apt-get install apache2-utils
6.ab的應用
ab的命令參數比較多,我們經常使用的是-c和-n參數。
ab -c 10 -n 100 http://www.myvick.cn/index.php :同時處理100個請求並運行10次index.php
-c10表示並發用戶數為10
-n100表示請求總數為100
[root@vic html]# ab -c 10 -n 100 http://www.myvick.cn/index.php This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking www.myvick.cn (be patient).....done Server Software: nginx/1.13.6 #測試服務器的名字 Server Hostname: www.myvick.cn #請求的URL主機名 Server Port: 80 #web服務器監聽的端口 Document Path: /index.php #請求的URL中的根絕對路徑,通過該文件的后綴名,我們一般可以了解該請求的類型 Document Length: 799 bytes #HTTP響應數據的正文長度 Concurrency Level: 10 # 並發用戶數,這是我們設置的參數之一 Time taken for tests: 0.668 seconds #所有這些請求被處理完成所花費的總時間 單位秒 Complete requests: 100 # 總請求數量,這是我們設置的參數之一 Failed requests: 0 # 表示失敗的請求數量,這里的失敗是指請求在連接服務器、發送數據等環節發生異常,以及無響應后超時的情況 Write errors: 0 Total transferred: 96200 bytes #所有請求的響應數據長度總和。包括每個HTTP響應數據的頭信息和正文數據的長度 HTML transferred: 79900 bytes # 所有請求的響應數據中正文數據的總和,也就是減去了Total transferred中HTTP響應數據中的頭信息的長度 Requests per second: 149.71 [#/sec] (mean) #吞吐率,計算公式:Complete requests/Time taken for tests 總請求數/處理完成這些請求數所花費的時間 Time per request: 66.797 [ms] (mean) # 用戶平均請求等待時間,計算公式:Time token for tests/(Complete requests/Concurrency Level)。處理完成所有請求數所花費的時間/(總請求數/並發用戶數) Time per request: 6.680 [ms] (mean, across all concurrent requests) #服務器平均請求等待時間,計算公式:Time taken for tests/Complete requests,正好是吞吐率的倒數。也可以這么統計:Time per request/Concurrency Level Transfer rate: 140.64 [Kbytes/sec] received #表示這些請求在單位時間內從服務器獲取的數據長度,計算公式:Total trnasferred/ Time taken for tests,這個統計很好的說明服務器的處理能力達到極限時,其出口寬帶的需求量。 Connection Times (ms) min mean[+/-sd] median max Connect: 1 2 0.7 2 5 Processing: 2 26 81.3 3 615 Waiting: 1 26 81.3 3 615 Total: 3 28 81.3 6 618 Percentage of the requests served within a certain time (ms) 50% 6 66% 6 75% 7 80% 7 90% 10 95% 209 98% 209 99% 618 100% 618 (longest request)
#Percentage of requests served within a certain time(ms)這部分數據用於描述每個請求處理時間的分布情況,比如以上測試,80%的請求處理時間都不超過7ms,這個處理時間是指前面的Time per request,即對於單個用戶而言,平均每個請求的處理時間
7 nginx和apache對比
nginx性能確實比apache性能高。nginx的吞吐量大於apache的,吞吐量越大越好
參考資料:http://www.jb51.net/article/59469.htm
http://blog.csdn.net/caotianyin/article/details/49253055