使用Ab命令对Apache服务器进行负载压力测试
使用Ab命令對Apache服務器進行負載壓力測試
本站原創 [基于 署名-非商業使用-相同方式分享 2.5 協議,轉載須注明鏈接]
本文所述Ab命令已由管理員在Debian、Centos兩個系統中實際操作成功
壓力測試是性能調優過程中必不可少的一環。只有讓服務器處在高壓情況下才能真正體現出各種設置所暴露的問題。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 http://www.xxx.com/ |
-n后面的1000代表總共發出10000個請求;-c后面的100表示采用100個并發(模擬100個人同時訪問),后面的網址表示測試的目標URL。
稍等片刻,會得到類似如下回顯:
| 01 | This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0 |
| 02 | Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ |
| 03 | Copyright 1997-2005 The Apache Software Foundation, http://www.apache.org/ |
| 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進行測試(雖然理論上對真實結果有影響,但實際幾乎沒什么誤差)
總結
以上是生活随笔為你收集整理的使用Ab命令对Apache服务器进行负载压力测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 任正非:曾竭力反对华为做手机
- 下一篇: 【Redash 官方文档】查询-创建和编