LAMPX-AMPX測試篇:php
環境:
Linux: rhel5.8 (192.168.88.131虛擬機) ,物理機:192.168.88.1(Win7)
Apache: httpd-2.4.3.tar.bz2
MySQL: mysql-5.5.28.tar.gz
Php: php-5.4.8.tar.bz2
XCache: XCache-2.0.1.tar.bz2(php加速器)html
寫在測試以前:
mysql
一、請確認以前的安裝已成功完成.
二、關閉selinux和清空iptables,命令:setenforce 0;iptables -F
三、開啓php.ini的short_open_tag = On,此項提供對php等語言的簡寫方式,若是不開,安裝某些web配置時,可能會出現錯誤:操做命令以下:linux
- sed -i 's/\(^short_open_tag = O\)ff$/\1n/g' /etc/php.ini
一、修改主配置文件web
- sed -i "s/^#\(.*\<vhosts.conf\>$\)/\1/g" /etc/httpd/httpd.conf
- sed -i 's/\(^Doc.*cs\"$\)/\#\1/g' /etc/httpd/httpd.conf
二、配置兩個基於域名的虛擬主機(物理機測試時,記得修改hosts文件.)sql
- sed -i '/^[^#]/d' /etc/httpd/extra/httpd-vhosts.conf
- echo -e '<VirtualHost *:80>\n\tDocumentRoot "/web/mosweb"\n\tServerName mos.example.com\n\tErrorLog "/web/logs/mos-error_log"\n\tCustomLog "/web/logs/mos-access_log" common\n\t<Directory "/web/mosweb">\n\t\tOptions none\n\t\tAllowOverride none\n\t\tRequire all granted\n\t</Directory>\n</VirtualHost>\n\n<VirtualHost *:80>\n\tDocumentRoot "/web/wwwweb"\n\tServerName www.example.com\n\tErrorLog "/web/logs/www-error_log"\n\tCustomLog "/web/logs/www-access_log" common\n\t<Directory "/web/wwwweb">\n\t\tOptions none\n\t\tAllowOverride none\n\t\tRequire all granted\n\t</Directory>\n</VirtualHost>' >> /etc/httpd/extra/httpd-vhosts.conf
Ps: 淡定,親,這就是刪除系統默認的倆虛擬主機,再追加倆.須要注意的是高版本不在支持Order Allow,Deny的訪問控制格式了,並且,若是虛擬主機不設置訪問控制的話,則沒法被訪問,新版本的訪問格式以下:
Require all granted 容許全部請求訪問資源
Require all denied 拒絕全部請求訪問資源
Require env env-var [env-var] ... 當指定環境變量設置時容許訪問
Require method http-method [http-method] ... 容許指定的http請求方法訪問資源
Require expr expression 當expression返回true時容許訪問資源
Require user userid [userid] ... 容許指定的用戶id訪問資源
Require group group-name [group-name] ... 容許指定的組內的用戶訪問資源
Require valid-user 全部有效的用戶可訪問資源
Require ip 10 172.20 192.168.2 容許指定IP的客戶端可訪問資源
Require not group select select組內的用戶不可訪問資源數據庫
三、爲兩個虛擬主機建立對應的目錄和文件express
- mkdir -pv /web/{logs,{mos,www}web}
- echo -e '<h1>mos.example.com</h1>\n\t...OK!' > /web/mosweb/index.html
- echo -e '<h2>www.example.com</h2>\n\t...OK.\n<?php\nphpinfo();\n?>' >/web/wwwweb/index.php
四、修改windows的hosts,打開瀏覽器作測試便可apache
打開C:\Windows\System32\drivers\etc\hosts 添加以下行:windows
- 192.168.88.131 mos.example.com
- 192.168.88.131 www.example.com
- mysql -uroot -p 鍵入回車,輸入上篇設置的密碼123
- mysql>UPDATE mysql.user SET PASSWORD=PASSWORD('redhat') WHERE User='root';
- mysql>use test;
- mysql>GRANT ALL ON test.* TO 'testuser'@'%' IDENTIFIED BY '123';
- mysql>FLUSH PRIVILEGES;
二、 刪除不用的空用戶和IPv6的root用戶等.
Ps: 此時還在mysql控制檯中
- mysql>DELETE FROM user WHERE host='localhost.localdomain' AND user='';
- mysql>DELETE FROM user WHERE host='localhost' AND user='';
- mysql>DELETE FROM user WHERE host='::1';
- mysql>FLUSH PRIVILEGES;
- mysql>\q 此時纔算結束
三、 修改/web/wwwweb/index.php中內容以下:
- <?php
- $link=mysql_connect('192.168.88.131','testuser','123'); //php鏈接mysql函數
- if($link) echo ok; //若是鏈接成功,輸出ok
- else echo no; //若是鏈接失敗,輸出no
- mysql_close(); //手動關閉本次鏈接,可不寫,有默認超時時間.
- ?>
四、此時打開瀏覽器,輸出若爲OK,則表示正常.
一、 查看是否啓用此功能,此項功能由status_module模塊提供
- httpd -M|grep status_module
二、 在/etc/httpd/httpd.conf中加入以下行
- <Location /status> #定義本地全部虛擬主機訪問地址後面加/status便可使用
- SetHandler server-status #貌似是調用server-status設置顯示信息
- Require ip 192.168.88.0/24 #僅容許我本身定義的網段可看
- </Location>
三、 重啓httpd,並在物理機器上查看相關內容
- service httpd restart
- #打開瀏覽器:輸入 mos.example.com 輸出內容以下:
- Apache Server Status for mos.example.com (via 192.168.88.131)
- Server Version: Apache/2.4.3 (Unix) PHP/5.4.8 #軟件及版本
- Server Built: Oct 27 2012 17:33:04 #軟件編譯安裝的時間
- Current Time: Sunday, 28-Oct-2012 07:28:50 CST #服務器當前時間
- Restart Time: Sunday, 28-Oct-2012 07:15:27 CST #上次www軟件重啓 時間
- Parent Server Config. Generation: 1 #接收到重啓命令的次數
- Parent Server MPM Generation: 0 #貌似是告訴父進程是工做在MPM的模式下..
- Server uptime: 13 minutes 22 seconds #服務器運行時間
- Total accesses: 3 - Total Traffic: 3 kB # Apache收發的數據量
- CPU Usage: u0 s0 cu0 cs0 #CPU使用狀況
- .00374 requests/sec - 3 B/second - 1024 B/request
- 1 requests currently being processed, 74 idle workers
- PID Connections Threads Async connections
- total accepting busy idle writing keep-alive closing
- 8965 0 yes 0 25 0 0 0
- 8967 0 yes 0 25 0 0 0
- 8995 1 yes 1 24 0 0 0
- Sum 1 1 74 0 0 0
- ___________________________________________________W____________
- ___________.....................................................
- ................................................................
- 說明:
- * _:等待連結中。
- * S:啓動中。
- * R: 正在讀取要求。
- * W:正在送出迴應。
- * K:處於保持聯機的狀態。
- * D:正在查找 DNS。
- * C:正在關閉連結。
- * L:正在寫入記錄文件。
- * G:進入正常結束程序中。
- * I:處理閒置。
- * .:尚無此程序。
- Scoreboard Key:
- "_" Waiting for Connection, "S" Starting up, "R" Reading Request,
- "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
- "C" Closing connection, "L" Logging, "G" Gracefully finishing,
- "I" Idle cleanup of worker, "." Open slot with no current process
- Srv PID Acc M CPU SS Req Conn Child Slot Client VHost Request
- 1-0 8967 0/1/1 _ 0.00 796 0 0.0 0.00 0.00 192.168.88.1 mos.example.com:80 GET /status HTTP/1.1
- 2-0 8995 0/1/1 _ 0.00 3 2 0.0 0.00 0.00 192.168.88.1 mos.example.com:80 GET / HTTP/1.1
- 2-0 8995 0/0/0 W 0.00 0 1534167436 0.0 0.00 0.00 192.168.88.1 mos.example.com:80 GET /status HTTP/1.1
- 2-0 8995 0/1/1 _ 0.00 3 1 0.0 0.00 0.00 192.168.88.1 mos.example.com:80 GET /favicon.ico HTTP/1.1
- Srv Child Server number - generation #本程序與其父程序的編號
- PID OS process ID #本程序的PID(線程編號)
- Acc Number of accesses this connection / this child / this slot #分別表示本次聯機、本程序所處理的存取次數
- M Mode of operation #該程序目前的狀態。
- CPU CPU usage, number of seconds #該程序所耗用的 CPU 資源
- SS Seconds since beginning of most recent request #距離上次處理要求的時間
- Req Milliseconds required to process most recent request #最後一次處理要求所耗費的時間,以千分之一秒爲單位
- Conn Kilobytes transferred this connection #本次聯機所傳送的數據量
- Child Megabytes transferred this child #由該子程序所傳送的數據量
- Slot Total megabytes transferred this slot #由該 Slot 所傳送的數據量
一、下載最新版wordpress並解壓至網頁根目錄
- cd /root/work
- wget http://cn.wordpress.org/wordpress-3.4.2-zh_CN.tar.gz
- tar xf wordpress-3.4.2-zh_CN.tar.gz -C /web/mosweb/
- cd /web/mosweb/
- mv wordpress/* . #將wordpress文件直接放在網站根目錄.
二、複製配置文件,並配置鏈接數據參數
- cp wp-config-sample.php wp-config.php #複製模板文件,切勿mv
- sed -i 's@database_name_here@test@g' wp-config.php #指定鏈接數據庫
- sed -i 's@username_here@testuser@g' wp-config.php #鏈接數據庫的用戶名
- sed -i 's@password_here@123@g' wp-config.php #鏈接數據庫的密碼
三、打開物理機(Win7),進入wordpress作配置收尾工做
打開瀏覽器,輸入 mos.example.com
按提示,輸入用戶名,密碼,郵箱而後提交便可.
一、修改虛擬機hosts文件,使其解析域名mos.example.com
- echo -e '192.168.88.131\tmos.example.com\n192.168.88.131\twww.example.com' >> /etc/hosts
- #追加完成後,直接使用ping mos.example.com和www.example.com測試
二、簡單的測試,譬如,200個用戶,同時每一個發10個請求到網頁根目錄的index.php文件
- ab -c 200 -n 2000 www.example.com/index.php
-c 有多少個用戶同時發送請求, -n 總共發出的請求數
下面貼出筆者一個測試的結果做爲範例註釋:
- This is ApacheBench, Version 2.3 <$Revision: 1373084 $>
- Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
- Licensed to The Apache Software Foundation, http://www.apache.org/
- #一些版本相關信息等
- Benchmarking mos.example.com (be patient)
- Completed 200 requests
- Completed 400 requests
- Completed 600 requests
- Completed 800 requests
- Completed 1000 requests
- Completed 1200 requests
- Completed 1400 requests
- Completed 1600 requests
- Completed 1800 requests
- Completed 2000 requests
- Finished 2000 requests
- #進度...
- Server Software: Apache/2.4.3 #軟件版本
- Server Hostname: mos.example.com #測試主機
- Server Port: 80 #經過80端口
- Document Path: /wp-login.php #測試頁面wordpress登錄頁面
- Document Length: 242 bytes #測試頁面大小
- Concurrency Level: 200 #測試的併發請求數
- Time taken for tests: 18.055 seconds #測試總耗時
- Complete requests: 2000 #所有請求書
- Failed requests: 276 #失敗的請求
- (Connect: 0, Receive: 0, Length: 276, Exceptions: 0)
- Write errors: 0
- Non-2xx responses: 1724
- Total transferred: 1771164 bytes #一共傳輸的字節
- HTML transferred: 999844 bytes #生成的html的內容傳輸總量
- Requests per second: 110.77 [#/sec] (mean) #大概每秒能完成幾個
- Time per request: 1805.550 [ms] (mean) #每一個請求大概耗時
- Time per request: 9.028 [ms] (mean, across all concurrent requests) #相對於全部的併發請求,平均每一個用時多久
- Transfer rate: 95.80 [Kbytes/sec] received #傳輸速率...介個真心不高,估計是用的虛擬網卡緣故
- Connection Times (ms) #鏈接時間
- min mean[+/-sd] median max
- Connect: 0 7 22.6 0 140 #鏈接
- Processing: 23 1667 2587.2 704 16935 #處理
- Waiting: 0 1665 2587.3 704 16935 #等待
- Total: 24 1674 2593.1 720 16968
- Percentage of the requests served within a certain time (ms)
- 50% 720
- 66% 1198
- 75% 1562
- 80% 2107
- 90% 5423
- 95% 7555
- 98% 9908
- 99% 12855
- 100% 16968 (longest request)
- #某個時間段的平均處理速率.
Ps: 測試時,儘可能使用局域網測試,上面的結果,筆者的本地虛擬網卡,的傳輸速度太慢了,這估計是因爲vmware虛擬網卡自身的問題,這已經嚴重影響了測試的有效性. 測試時,能夠開多個控制檯,使用vmstat 1和top,以及網頁的status進行觀察系統滿載時的各類詳細參數. ab測試時,儘可能使用多個頁面,屢次測試,去平均值爲最好,若測試的精細,可對XCache開啓和關閉的效果分別測試,以及apache的mpm的幾個工做模型作詳細修改測試,以及apache內各類配置的關閉和開啓後的效果測,方式都是同樣(筆者不少都正在測試).