壓力測試是效能調優過程中必不可少的一環。只有讓伺服器處在高壓情況下才能真正體現出各種設定所暴露的問題。apache中有個自帶的,名為ab的程式,可以對apache或其它型別的伺服器進行**訪問壓力測試。
ab命令原理
ab命令會建立很多的併發訪問執行緒,模擬多個訪問者同時對某一url進行訪問。它的測試目標是基於url的,因此,既可以用來測試apache的負載壓力,也可以測試nginx、lighthttp、iis等其它web伺服器的壓力
ab命令對發出負載的計算機要求很低,既不會占用很多cpu,也不會占用太多的記憶體,但卻會給目標伺服器造成巨大的負載,因此是某些ddos攻擊之必備良藥,老少皆宜。自己使用也須謹慎。否則一次上太多的負載,造成目標伺服器直接因記憶體耗光宕機,而不得不硬重啟,得不償失。
ab實戰
在windows系統下,開啟cmd命令列視窗,定位到apache安裝目錄的bin目錄下;
對於linux系統,一般安裝好apache後可以直接執行;
1
ab -n 10000 -c 100
-n後面的1000代表總共發出10000個請求;-c後面的100表示採用100個併發(模擬100個人同時訪問),後面的**表示測試的目標url。
稍等片刻,會得到類似如下回顯:
01
this is apachebench, version 2.0.40-dev <$revision: 1.146 $> apache-2.0
02
03
04
05
benchmarking localhost (be patient)
06
completed 100 requests
07
completed 200 requests
08
completed 300 requests
09
completed 400 requests
10
completed 500 requests
11
completed 600 requests
12
completed 700 requests
13
completed 800 requests
14
completed 900 requests
15
finished 1000 requests
16
server software: apache/2.0.52
17
server hostname: localhost
18
server port: 80
19
20
document path: /
21
document length: 1494 bytes
22
23
concurrency level: 100
24
/*整個測試持續的時間*/
25
time taken for tests: 3.296875 seconds
26
/*完成的請求數量*/
27
complete requests: 1000
28
/*失敗的請求數量*/
29
failed requests: 0
30
write errors: 0
31
/*保持聯機連線的請求數量。只有在命令列中使用-k,才能看到該屬性值。*/
32
keep-alive requests: 1000
33
/*整個場景中的網路傳輸量*/
34
total transferred: 1987070 bytes
35
/*整個場景中的html內容傳輸量*/
36
html transferred: 1494000 bytes
37
/*每秒鐘平均處理的請求數*/
38
requests per second: 303.32 [#/sec] (mean)
39
/*每個執行緒下的一組請求平均消耗時間*/
40
time per request: 329.688 [ms] (mean)
41
/*併發的每個請求平均消耗時間*/
42
time per request: 3.297 [ms] (mean, across all concurrent requests)
43
/*平均每秒網路上的流量,可以幫助排除是否存在網路流量過大導致響應時間延長的問題*/
44
transfer rate: 588.44 [kbytes/sec] received
45
46
connection times (ms)
47
min mean[+/-sd] median max
48
connect: 0 0 0.8 0 15
49
processing: 0 212 69.4 218 406
50
waiting: 0 211 69.5 218 406
51
total: 0 212 69.3 218 406
52
/*下面的內容為整個場景中所有請求的響應情況。在場景中每個請求都有乙個響應時間,其中 50% 的使用者響應時間小於 218 毫秒,66 % 的使用者響應時間小於 234 毫秒,最大的響應時間小於 406 毫秒*/
53
54
percentage of the requests served within a certain time (ms)
55
50% 218
56
66% 234
57
75% 250
58
80% 265
59
90% 296
60
95% 312
61
98% 343
62
99% 359
63
100% 406 (longest request)
根據個人經驗,真正在遠端對apache進行壓力測試,往往效果會非常不明顯(因為網路延時過大),因此在某些情況下,建議乾脆在vps上對localhost進行測試(雖然理論上對真實結果有影響,但實際幾乎沒什麼誤差)
使用apache的ab命令進行壓測
環境盡量和線上保持一致 ngixn版本,php版本,網路大小,在測試高併發的時候要修改測試機的最大訪問量ulimit n,ab是單執行緒程式,只能利用單一cpu,在給效能好的伺服器端應用做壓測時,往往跑ab的測試機負荷滿了 而伺服器應用的效能還綽綽有餘。yum y install httpd too...
使用Apache自帶的ab來測試伺服器效能
使用apache自帶的ab來測試伺服器效能 假設我們要對 test.php 做測試,1000 次的聯機請求,而且同一時間有 20 個並行的 concurrent 聯機請求的情況,只要在命令列模式下執行 apache的bin目錄下 格式.ab options http hostname port pa...
ab命令基本使用
linux下安裝ab壓力測試工具及ab命令詳解 ab v 檢視ab版本 ab help ab n1000 c 10 是我的小 掛在虛擬主機上的 n訪問1000次,c併發10個 ab壓力測試返回報文內容詳解 server software apache 伺服器軟體 server hostname ww...