一.下載穩定版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
修改監聽端口windows
默認80端口,若端口被其餘應用程序佔用,切記監聽的端口必定不能被使用:(查看80端口是否被佔用,命令行下輸入:netstat -aon|findstr "80")安全
打開apache目錄下的conf/httpd.conf 搜索 "Listen 80";
修改成Listen 7777;
保存以後再從新啓動apache。服務器
開始-->運行-->services.msc-->肯定,找到服務後,右鍵操做
在linux下安裝:
壓力測試經過肯定一個系統的瓶頸或者不能接收的性能點,來得到系統能提供的最大的服務級別的測試。通俗地講,壓力測試是爲了發如今什麼條件下您的應用程序的性能會變得不可接受。再簡單點,就是你網站的性能的一個評定,性能由自己程序和網站服務器共同決定。 而進行壓力測試,就是爲了讓你更好得掌握網站的各個信息。
Apache Benchmark簡稱爲ab,是apache自帶的用於HTTP Server測試的工具。它能夠接受單一的URL,而後重複地按照指定的多個獨立線程的方式加載,並使用不一樣的命令行參數控制訪問的次數、最大的併發訪問數等。
# ab -n1000 -c10 http://192.168.116.193/index.html #表示每次併發10個請求,總共請求1000次
注意:請求URL要使用雙引號括起來,不然ab沒法識別&符號
參數文檔:參數文檔內容使用「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 毫秒
注意:
注意:請求URL要使用雙引號括起來,不然ab沒法識別&符號
參數文檔:參數文檔內容使用「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。
七.安裝時常見問題解決: