使用ab命令對Apache伺服器進行負載壓力測試

2021-06-06 13:02:45 字數 4403 閱讀 9468

壓力測試是效能調優過程中必不可少的一環。只有讓伺服器處在高壓情況下才能真正體現出各種設定所暴露的問題。apache中有個自帶的,名為ab的程式,可以對apache或其它型別的伺服器進行**訪問壓力測試。

ab命令原理

ab命令會建立很多的併發訪問執行緒,模擬多個訪問者同時對某一url進行訪問。它的測試目標是基於url的,因此,既可以用來測試apache的負載壓力,也可以測試nginx、lighthttp、iis等其它web伺服器的壓力

ab命令對發出負載的計算機要求很低,既不會占用很多cpu,也不會占用太多的記憶體,但卻會給目標伺服器造成巨大的負載,因此是某些ddos攻擊之必備良藥,老少皆宜。自己使用也須謹慎。否則一次上太多的負載,造成目標伺服器直接因記憶體耗光宕機,而不得不硬重啟,得不償失。

ab實戰

在windows系統下,開啟cmd命令列視窗,定位到apache安裝目錄的bin目錄下;

對於linux系統,一般安裝好apache後可以直接執行;

1ab -n 10000 -c 100

-n後面的1000代表總共發出10000個請求;-c後面的100表示採用100個併發(模擬100個人同時訪問),後面的**表示測試的目標url。

稍等片刻,會得到類似如下回顯:

01this is apachebench, version 2.0.40-dev <$revision: 1.146 $> apache-2.0

02

03

04

05benchmarking localhost (be patient)

06completed 100 requests

07completed 200 requests

08completed 300 requests

09completed 400 requests

10completed 500 requests

11completed 600 requests

12completed 700 requests

13completed 800 requests

14completed 900 requests

15finished 1000 requests

16server software: apache/2.0.52

17server hostname: localhost

18server port: 80

19

20document path: /

21document length: 1494 bytes

22

23concurrency level: 100

24/*整個測試持續的時間*/

25time taken for tests: 3.296875 seconds

26/*完成的請求數量*/

27complete requests: 1000

28/*失敗的請求數量*/

29failed requests: 0

30write errors: 0

31/*保持聯機連線的請求數量。只有在命令列中使用-k,才能看到該屬性值。*/

32keep-alive requests: 1000

33/*整個場景中的網路傳輸量*/

34total transferred: 1987070 bytes

35/*整個場景中的html內容傳輸量*/

36html transferred: 1494000 bytes

37/*每秒鐘平均處理的請求數*/

38requests per second: 303.32 [#/sec] (mean)

39/*每個執行緒下的一組請求平均消耗時間*/

40time per request: 329.688 [ms] (mean)

41/*併發的每個請求平均消耗時間*/

42time per request: 3.297 [ms] (mean, across all concurrent requests)

43/*平均每秒網路上的流量,可以幫助排除是否存在網路流量過大導致響應時間延長的問題*/

44transfer rate: 588.44 [kbytes/sec] received

45

46connection times (ms)

47min mean[+/-sd] median max

48connect: 0 0 0.8 0 15

49processing: 0 212 69.4 218 406

50waiting: 0 211 69.5 218 406

51total: 0 212 69.3 218 406

52/*下面的內容為整個場景中所有請求的響應情況。在場景中每個請求都有乙個響應時間,其中 50% 的使用者響應時間小於 218 毫秒,66 % 的使用者響應時間小於 234 毫秒,最大的響應時間小於 406 毫秒*/

53

54percentage of the requests served within a certain time (ms)

5550% 218

5666% 234

5775% 250

5880% 265

5990% 296

6095% 312

6198% 343

6299% 359

63100% 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...