ab壓力測試工具的使用

一.下載穩定版2.2.31php

    http://httpd.apache.org/html

 

二.2.2.*和2.4.*區別?linux

    httpd-2.2.x(prefork)
    httpd-2.4.x(event) 編譯時可使用--with-mpm=prefork手動指定其使用prefork
    PHP官方推薦httpd使用prefork(php能更穩定地運行),而不是線程化的worker和event,httpd-2.4.x默認使用線程化的event做爲mpm.
    Linux上不少PECL庫都是非線程安全的,libphp5.so在線程化的httpd(event/worker)中運行可能會出現一些問題,爲了保持兼容性和穩定性,PHP通常仍是使用httpd-2.2.x(prefork)這個分支.nginx

 



apache自己不提供已編譯的安裝包,只提供源碼,若是你本身沒法編譯,能夠選擇下面這些官方推薦的第三方提供編譯的網站。
其中後兩個是有名的wamp以及xampp集成環境,若是隻想下載apache能夠選擇前三個網站,這裏咱們第一個ApacheHaus爲例。c++

選擇版本進行下載(Apache 2.2 VC9)apache

 

 

 

 

 

 

 

三.安裝json

  • 解壓到指定目錄

  • 命令行下進入到apache下面的bin目錄,輸入:httpd -k install,把apache安裝成windows後臺服務。
  • 修改配置文件\conf\httpd.conf
    •   
    • 修改監聽端口windows

 

            默認80端口,若端口被其餘應用程序佔用,切記監聽的端口必定不能被使用:(查看80端口是否被佔用,命令行下輸入:netstat -aon|findstr "80"安全

            打開apache目錄下的conf/httpd.conf  搜索   "Listen 80";
            修改成Listen 7777;
            保存以後再從新啓動apache。服務器

 

        

    • 修改Apache的存放路徑

    

 

  • 如何啓動,中止,重啓,Apache?
    • 利用ApacheMonitor來啓動你的apache(也能夠不用這個,能夠直接使用httpd -k start來啓動)關閉:httpd -k stop 重啓:httpd -k restart
    • 開始-->運行-->services.msc-->肯定,找到服務後,右鍵操做

 在linux下安裝:

  • yum -y install httpd-tools
  • 進入到/usr/bin目錄下

四.使用AS進行壓力測試

 

        壓力測試經過肯定一個系統的瓶頸或者不能接收的性能點,來得到系統能提供的最大的服務級別的測試。通俗地講,壓力測試是爲了發如今什麼條件下您的應用程序的性能會變得不可接受。再簡單點,就是你網站的性能的一個評定,性能由自己程序和網站服務器共同決定。 而進行壓力測試,就是爲了讓你更好得掌握網站的各個信息。


  • Apache自帶工具AB是什麼?

        Apache Benchmark簡稱爲ab,是apache自帶的用於HTTP Server測試的工具。它能夠接受單一的URL,而後重複地按照指定的多個獨立線程的方式加載,並使用不一樣的命令行參數控制訪問的次數、最大的併發訪問數等。

  • AB怎麼用?
    • cmd,進入apache目錄的bin目錄下:

    # ab -n1000 -c10 http://192.168.116.193/index.html    #表示每次併發10個請求,總共請求1000次

    • 輸入:ab -n 10 -c 10 "http://paycenter.gotrip8.com/querypay.aspx?Version=1.0&InputCharset=GBK&SignType=MD5&PlatFormCode=CPOTA&OrderNo=TEST0123456784&Sign=185FA68CA23AAE7B3A02A226ABD30297"

 

    注意:請求URL要使用雙引號括起來,不然ab沒法識別&符號

 

 

 

 

    •    Post方式請求

      參數文檔:參數文檔內容使用「key=value&key=value&key=value...」方式進行拼接,還有json的方式,但我實驗沒有成功,接收不到參數,具體緣由未知

 

 

輸入:ab -n 10 -c 10 -p d:\test\querypay.txt -T application/x-www-form-urlencoded http://paycenter.gotrip8.com/querypay.aspx

 

注意:-p是參數文檔路徑,-T是大寫英文字母,post表單格式爲:application/x-www-form-urlencoded

 

 

    • 解析輸出結果:

      This is ApacheBench, Version 2.3<$Revision: 655654 $>

      Copyright 1996 Adam Twiss, Zeus TechnologyLtd, http://www.zeustech.net/

      Licensed to The Apache Software Foundation,http://www.apache.org/

      Benchmarking 192.168.116.193 (be patient)

          Completed 100

          requestsCompleted 200

          requestsCompleted 300

          requestsCompleted 400

          requestsCompleted 500

          requestsCompleted 600       

          requestsCompleted 700

          requestsCompleted 800

          requestsCompleted 900

          requestsCompleted 1000

          requestsFinished 1000 requests

      Server Software:        nginx/1.0.15               #平臺apache 版本

      Server Hostname:        192.168.116.193            #服務器主機名

      Server Port:            80                         #服務器端口

      Document Path:          /index.html                #測試的頁面

      Document Length:        3698 bytes                 #測試頁面大小

      Concurrency Level:      10                         #併發數

      Time taken for tests:   0.577 seconds              #整個測試耗時

      Complete requests:      1000                       #總共完成的請求數量

      Failed requests:        0                          #表示失敗的總請求數,這裏的失敗指請求在鏈接服務器、發送數據、接收數據等環節發生異常,以及無響應超時等狀況

      Write errors:           0                          #網絡鏈接寫入錯誤數

      Total transferred:      3917820 bytes              #測試過程當中產生的網絡傳輸總量

      HTML transferred:       3705396 bytes              #測試過程當中產生的HTML傳輸量

      Requests per second:    1733.55 [#/sec] (mean)     #表示服務器吞吐量,每秒事務數,括號中的 mean 表示這是一個平均值,

                                        計算規則:Request per second = Complete requests / Timetaken for tests(主要關注)

      Time per request:       5.768 [ms] (mean)          #表示用戶請求的平均響應時間,後面括號中的mean表示這是一個平均值

                                         計算規則:Time per request = Time taken for tests /( Complete requests / Concurrency Level)(主要關注)

      Time per request:       0.577 [ms] (mean, across all concurrentrequests)   #表示服務器請求平均處理時間,即實際運行時間的平均值(主要關注)

      Transfer rate:          6632.57 [Kbytes/sec] received      #表示這些請求在單位時間內從服務器獲取的數據長度,能夠幫助排除是否存在網絡流量過大致使響應時間延長的問題

      Connection Times (ms)min  mean[+/-sd] median   maxConnect:        0   2   5.5      2     85

      Processing:     1   3   6.3      2     84

          Waiting:        0   2   5.1      2     82

            Total:          2   5   8.8      4    100    #網絡上消耗的時間的分解,表示這些請求在單位時間內從服務器獲取的數據長度

      Percentage of the requests served within acertain time (ms)      #整個場景中全部請求的響應狀況,在場景中每一個請求都有一個響應時間

      50%      4        #其中50%的用戶響應時間小於4毫秒

      66%      5        #60%的用戶響應時間小於5毫秒

      75%      5        #

      80%      5        #

      90%      6        #

      95%      9        #

      98%     19        #

      99%     80        #

      100%   100 (longest request)      #最大的響應時間小於100 毫秒

 

 注意:

  • 輸入:ab -n 10 -c 10 "http://paycenter.gotrip8.com/querypay.aspx?Version=1.0&InputCharset=GBK&SignType=MD5&PlatFormCode=CPOTA&OrderNo=TEST0123456784&Sign=185FA68CA23AAE7B3A02A226ABD30297"

    注意:請求URL要使用雙引號括起來,不然ab沒法識別&符號

 

  •  Post方式請求

    參數文檔:參數文檔內容使用「key=value&key=value&key=value...」方式進行拼接,還有json的方式,但我實驗沒有成功,接收不到參數,具體緣由未知

輸入:ab -n 10 -c 10 -p d:\test\querypay.txt -T application/x-www-form-urlencoded http://paycenter.gotrip8.com/querypay.aspx

注意:-p是參數文檔路徑,-T是大寫英文字母,post表單格式爲:application/x-www-form-urlencoded



六.Ab命令參數註釋

  -n    #指定在測試會話中所執行的請求總個數。默認時,僅執行一個請求。 

  -c    #指定一次產生的請求個數。默認是一次一個。也就是每次的併發請求數,可是這個數值不能大於-n後面的數值,否者會報錯:ab: Cannot use concurrency level greater than total number of requests

  -t    #測試所進行的最大秒數。其內部隱含值是-n 50000。它可使對服務器的測試限制在一個固定的總時間之內。默認時,沒有時間限制。

  -p    #包含了須要POST的數據的文件.

  -T    #POST數據所使用的Content-type頭信息。

  -v    #設置顯示信息的詳細程度 - 4或更大值會顯示頭信息, 3或更大值能夠顯示響應代碼(404, 200等), 2或更大值能夠顯示警告和其餘信息。 -V 顯示版本號並退出。

  -w    #以HTML表的格式輸出結果。默認時,它是白色背景的兩列寬度的一張表。

  -I    #執行HEAD請求,而不是GET。

 七.安裝時常見問題解決:

  • cmd輸入命令行找到你Apache所在的位置,以後輸入httpd -k install命令執行就能夠安裝了。

  • 這個時候運行忽然報"沒法啓動此程序,由於計算機中丟失VCRUNTIME140.dll 嘗試從新安裝此程序以解決此問題",解決方案是:下載vc++2015 並安裝,連接是:https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=48145,這個直接下載安裝就能夠了。
  • 從新運行的時候又會出現一個問題,就是沒有Apache的安裝權限。但你看到這個報錯的時候,找到cmd,用管理員身份運行就能夠了。說一下我這是win8系統,因此看起來比較彆扭,你能夠直接找到cmd的目錄C:\Windows\SysWOW64,找到cmd.exe用管理員身份運行就ok了。

  • 問題一個接一個,你從新輸入命令行httpd -k install,出現以下報錯,這是因爲程序默認路徑和程序實際安裝路徑不一致致使的。這個解決方案是,找到Apache安裝程序目錄下的conf文件,找到httpd.conf用記事本打開,搜索"Define SRVROOT",找到須要改動的位置,Define SRVROOT引號裏面改爲本身程序路徑就能夠了。

  • 終於看到曙光了,這樣基本全部可能遇到的問題都解決了。接下來咱們會看到安裝成功了。輸入命令行net start Apache2.4啓動服務,測試安裝狀況,出現以下狀況則是安裝正確。同時能夠輸入http://localhost/進行驗證,出現以下頁面。

  • 若是Listen的端口被佔用,也就是端口衝突就會出如今這種狀況

相關文章
相關標籤/搜索