摘要:本篇文章主要講解如何在Linux下使用ab壓力測試工具進行網站訪問壓力測試,并使用ab對YzmCMS網站進行并發(fā)壓力測評,驗證YzmCMS系統(tǒng)性能,ab是apachebench命令的縮寫,ab是apache自帶的壓力測試工具...
一.ab的簡介
ab是apachebench命令的縮寫,ab是apache自帶的壓力測試工具。ab非常實用,它不僅可以對apache服務器進行網站訪問壓力測試,也可以對或其它類型的服務器進行壓力測試。比如nginx、tomcat、IIS等。
二.ab的原理
ab的原理:ab命令會創(chuàng)建多個并發(fā)訪問線程,模擬多個訪問者同時對某一URL地址進行訪問。它的測試目標是基于URL的,因此,它既可以用來測試apache的負載壓力,也可以測試nginx、lighthttp、tomcat、IIS等其它Web服務器的壓力。
ab命令對發(fā)出負載的計算機要求很低,它既不會占用很高CPU,也不會占用很多內存。但卻會給目標服務器造成巨大的負載,其原理類似CC攻擊。自己測試使用也需要注意,否則一次上太多的負載??赡茉斐赡繕朔掌髻Y源耗完,嚴重時甚至導致死機。
三.ab的安裝
yum -y install httpd-tools
測試安裝是否成功:
[root@yzmcms /]# ab -V This is ApacheBench, Version 2.3 <$Revision: 1430300 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/
四.性能指標
吞吐量(Requests per second):
服務器并發(fā)處理能力的量化描述,單位是reqs/s,指的是在某個并發(fā)用戶數(shù)下單位時間內處理的請求數(shù)。某個并發(fā)用戶數(shù)下單位時間內能處理的最大請求數(shù),稱之為最大吞吐率。
記?。和掏侣适腔诓l(fā)用戶數(shù)的。這句話代表了兩個含義:
a、吞吐率和并發(fā)用戶數(shù)相關
b、不同的并發(fā)用戶數(shù)下,吞吐率一般是不同的
計算公式:總請求數(shù)/處理完成這些請求數(shù)所花費的時間,即
Request per second=Complete requests/Time taken for tests
必須要說明的是,這個數(shù)值表示當前機器的整體性能,值越大越好。
并發(fā)連接數(shù)(The number of concurrent connections):
并發(fā)連接數(shù)指的是某個時刻服務器所接受的請求數(shù)目,簡單的講,就是一個會話。
并發(fā)用戶數(shù)(Concurrency Level):
要注意區(qū)分這個概念和并發(fā)連接數(shù)之間的區(qū)別,一個用戶可能同時會產生多個會話,也即連接數(shù)。在HTTP/1.1下,IE7支持兩個并發(fā)連接,IE8支持6個并發(fā)連接,F(xiàn)ireFox3支持4個并發(fā)連接,所以相應的,我們的并發(fā)用戶數(shù)就得除以這個基數(shù)。
用戶平均請求等待時間(Time per request):
計算公式:處理完成所有請求數(shù)所花費的時間/(總請求數(shù)/并發(fā)用戶數(shù)),即:
Time per request=Time taken for tests/(Complete requests/Concurrency Level)
服務器平均請求等待時間(Time per request:across all concurrent requests):
計算公式:處理完成所有請求數(shù)所花費的時間/總請求數(shù),即:
Time taken for/testsComplete requests
可以看到,它是吞吐率的倒數(shù)。
同時,它也等于用戶平均請求等待時間/并發(fā)用戶數(shù),即
Time per request/Concurrency Level
五.ab測試實例:
模擬GET請求:
ab -c 10 -n 100 https://www.yzmask.com/index/test
-c 10表示并發(fā)用戶數(shù)為 10
-n 100表示請求總數(shù)為 100
模擬POST請求:
ab -c 10 -n 100 -p '/tmp/post.txt' -T 'application/x-www-form-urlencoded' 'https://www.yzmask.com/index/test/post'
-p 模擬post請求,文件格式為 name=yzmcms&status=1 ,配合-T使用
-T post數(shù)據(jù)所使用的Content-Type頭信息,例如-T 'application/x-www-form-urlencoded'
POST請求時需把post的數(shù)據(jù)寫入到文件內,然后 -p '文件地址'即可
返回結果說明:
This is ApacheBench, Version 2.3 <$Revision: 1430300 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking www.yzmask.com (be patient).....done Server Software: nginx #測試服務器的名字 Server Hostname: www.yzmask.com #請求的URL主機名 Server Port: 80 #web服務器監(jiān)聽的端口 Document Path: /index/test/post #請求的URL中的根絕對路徑 Document Length: 1 bytes #HTTP響應數(shù)據(jù)的正文長度 Concurrency Level: 10 # 并發(fā)用戶數(shù),這是我們設置的參數(shù)之一 Time taken for tests: 0.432 seconds #所有這些請求被處理完成所花費的總時間 單位秒 Complete requests: 100 # 總請求數(shù)量,這是我們設置的參數(shù)之一 Failed requests: 0 # 表示失敗的請求數(shù)量,這里的失敗是指請求在連接服務器、發(fā)送數(shù)據(jù)等環(huán)節(jié)發(fā)生異常,以及無響應后超時的情況 Write errors: 0 Total transferred: 18000 bytes #所有請求的響應數(shù)據(jù)長度總和。包括每個HTTP響應數(shù)據(jù)的頭信息和正文數(shù)據(jù)的長度 Total body sent: 20400 HTML transferred: 200 bytes # 所有請求的響應數(shù)據(jù)中正文數(shù)據(jù)的總和,也就是減去了Total transferred中HTTP響應數(shù)據(jù)中的頭信息的長度 Requests per second: 231.44 [#/sec] (mean) #吞吐率,計算公式:Complete requests/Time taken for tests 總請求數(shù)/處理完成這些請求數(shù)所花費的時間 Time per request: 43.207 [ms] (mean) # 用戶平均請求等待時間,計算公式:Time token for tests/(Complete requests/Concurrency Level)。處理完成所有請求數(shù)所花費的時間/(總請求數(shù)/并發(fā)用戶數(shù)) Time per request: 4.321 [ms] (mean, across all concurrent requests) #服務器平均請求等待時間,計算公式:Time taken for tests/Complete requests,正好是吞吐率的倒數(shù)。也可以這么統(tǒng)計:Time per request/Concurrency Level Transfer rate: 40.68 [Kbytes/sec] received 46.11 kb/s sent 86.79 kb/s total Connection Times (ms) min mean[+/-sd] median max Connect: 8 12 2.5 12 16 Processing: 14 28 7.4 28 44 Waiting: 14 28 7.4 28 44 Total: 23 40 8.3 40 58 Percentage of the requests served within a certain time (ms) 50% 40 66% 44 75% 45 80% 47 90% 50 95% 55 98% 56 99% 58 100% 58 (longest request)
總結:ab確實是一款比較好用的壓力測試工具,經過反復測試,YzmCMS系統(tǒng)果然不負所望,在高并發(fā)請求時頁面打開速度毫無影響,相對于其他開源產品明顯表現(xiàn)的更加高效!
關于YzmCMS測評還有另外一篇文章,大家如果有興趣可以查看:YzmCMS百萬數(shù)據(jù)負載測評!
網友評論:
不錯,學習學習
2019-03-14 13:40:16 回復
網友評論:
YzmCMS博客網友 回復 YzmCMS博客網友 :必須的
2019-01-10 10:12:10 回復
網友評論:
好文,又學習到了
2018-12-25 10:09:37 回復