LAMPX-AMPX測試篇:

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

  
  
  
  
  1. sed -i 's/\(^short_open_tag = O\)ff$/\1n/g' /etc/php.ini 

擬主機配置篇:


一、修改主配置文件
web

  
  
  
  
  1. sed -i "s/^#\(.*\<vhosts.conf\>$\)/\1/g" /etc/httpd/httpd.conf  
  2. sed -i 's/\(^Doc.*cs\"$\)/\#\1/g' /etc/httpd/httpd.conf 

二、配置兩個基於域名的虛擬主機(物理機測試時,記得修改hosts文件.)sql

  
  
  
  
  1. sed -i '/^[^#]/d' /etc/httpd/extra/httpd-vhosts.conf  
  2. 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

  
  
  
  
  1. mkdir -pv /web/{logs,{mos,www}web}  
  2. echo -e '<h1>mos.example.com</h1>\n\t...OK!' > /web/mosweb/index.html  
  3. 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

  
  
  
  
  1. 192.168.88.131  mos.example.com  
  2. 192.168.88.131  www.example.com 

 

 

MySQL簡單測試篇:

一、 修改管理員密碼並給建立一個測試庫受權用戶

  
  
  
  
  1. mysql -uroot -p 鍵入回車,輸入上篇設置的密碼123  
  2. mysql>UPDATE mysql.user SET PASSWORD=PASSWORD('redhat'WHERE User='root';  
  3. mysql>use test;  
  4. mysql>GRANT ALL ON test.* TO 'testuser'@'%' IDENTIFIED BY '123';  
  5. mysql>FLUSH PRIVILEGES

二、 刪除不用的空用戶和IPv6的root用戶等.

Ps:  此時還在mysql控制檯中

  
  
  
  
  1. mysql>DELETE FROM user WHERE host='localhost.localdomain' AND user='';  
  2. mysql>DELETE FROM user WHERE host='localhost' AND user='';  
  3. mysql>DELETE FROM user WHERE host='::1';  
  4. mysql>FLUSH PRIVILEGES;  
  5. mysql>\q        此時纔算結束 

三、 修改/web/wwwweb/index.php中內容以下:

  
  
  
  
  1. <?php    
  2. $link=mysql_connect('192.168.88.131','testuser','123');  //php鏈接mysql函數  
  3. if($link) echo ok;  //若是鏈接成功,輸出ok  
  4. else echo no;   //若是鏈接失敗,輸出no 
  5. mysql_close();  //手動關閉本次鏈接,可不寫,有默認超時時間.  
  6. ?> 

四、此時打開瀏覽器,輸出若爲OK,則表示正常.

 

 

Apache開啓狀態監控測試.

一、 查看是否啓用此功能,此項功能由status_module模塊提供

  
  
  
  
  1. httpd -M|grep status_module 

二、 在/etc/httpd/httpd.conf中加入以下行

  
  
  
  
  1. <Location /status>      #定義本地全部虛擬主機訪問地址後面加/status便可使用  
  2.     SetHandler server-status    #貌似是調用server-status設置顯示信息  
  3.     Require ip 192.168.88.0/24   #僅容許我本身定義的網段可看  
  4. </Location> 

三、 重啓httpd,並在物理機器上查看相關內容

  
  
  
  
  1. service httpd restart  
  2. #打開瀏覽器:輸入 mos.example.com 輸出內容以下:  
  3. Apache Server Status for mos.example.com (via 192.168.88.131)  
  4.  
  5. Server Version: Apache/2.4.3 (Unix) PHP/5.4.8  #軟件及版本  
  6. Server Built: Oct 27 2012 17:33:04  #軟件編譯安裝的時間  
  7.  
  8. Current Time: Sunday, 28-Oct-2012 07:28:50 CST #服務器當前時間  
  9. Restart Time: Sunday, 28-Oct-2012 07:15:27 CST #上次www軟件重啓 時間  
  10. Parent Server Config. Generation: 1 #接收到重啓命令的次數  
  11. Parent Server MPM Generation: 0  #貌似是告訴父進程是工做在MPM的模式下..  
  12. Server uptime: 13 minutes 22 seconds  #服務器運行時間  
  13. Total accesses: 3 - Total Traffic: 3 kB  # Apache收發的數據量  
  14.  
  15. CPU Usage: u0 s0 cu0 cs0  #CPU使用狀況  
  16. .00374 requests/sec - 3 B/second - 1024 B/request  
  17. 1 requests currently being processed, 74 idle workers  
  18.  
  19. PID Connections     Threads Async connections  
  20. total   accepting   busy    idle    writing keep-alive  closing  
  21. 8965    0   yes 0   25  0   0   0  
  22. 8967    0   yes 0   25  0   0   0  
  23. 8995    1   yes 1   24  0   0   0  
  24. Sum 1       1   74  0   0   0  
  25.  
  26. ___________________________________________________W____________  
  27. ___________.....................................................  
  28. ................................................................  
  29. 說明:  
  30. * _:等待連結中。  
  31. * S:啓動中。  
  32. * R: 正在讀取要求。  
  33. * W:正在送出迴應。  
  34. * K:處於保持聯機的狀態。  
  35. * D:正在查找 DNS。  
  36. * C:正在關閉連結。  
  37. * L:正在寫入記錄文件。  
  38. * G:進入正常結束程序中。  
  39. * I:處理閒置。  
  40. * .:尚無此程序。  
  41.  
  42. Scoreboard Key:  
  43. "_" Waiting for Connection"S" Starting up, "R" Reading Request,  
  44. "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,  
  45. "C" Closing connection"L" Logging, "G" Gracefully finishing,  
  46. "I" Idle cleanup of worker, "." Open slot with no current process  
  47.  
  48. Srv PID Acc M   CPU     SS  Req Conn    Child   Slot    Client  VHost   Request  
  49. 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  
  50. 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  
  51. 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  
  52. 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  
  53. Srv Child Server number - generation #本程序與其父程序的編號  
  54. PID OS process ID  #本程序的PID(線程編號)  
  55. Acc Number of accesses this connection / this child / this slot #分別表示本次聯機、本程序所處理的存取次數  
  56. M   Mode of operation    #該程序目前的狀態。  
  57. CPU CPU usage, number of seconds     #該程序所耗用的 CPU 資源  
  58. SS  Seconds since beginning of most recent request    #距離上次處理要求的時間  
  59. Req Milliseconds required to process most recent request  #最後一次處理要求所耗費的時間,以千分之一秒爲單位  
  60. Conn    Kilobytes transferred this connection    #本次聯機所傳送的數據量  
  61. Child   Megabytes transferred this child       #由該子程序所傳送的數據量  
  62. Slot    Total megabytes transferred this slot      #由該 Slot 所傳送的數據量  

 

簡單搭建一個wordpress,使www.mos.com能夠打開.

一、下載最新版wordpress並解壓至網頁根目錄

  
  
  
  
  1. cd /root/work 
  2. wget http://cn.wordpress.org/wordpress-3.4.2-zh_CN.tar.gz  
  3. tar xf wordpress-3.4.2-zh_CN.tar.gz -C /web/mosweb/  
  4. cd /web/mosweb/  
  5. mv wordpress/* .    #將wordpress文件直接放在網站根目錄. 

二、複製配置文件,並配置鏈接數據參數

  
  
  
  
  1. cp wp-config-sample.php wp-config.php #複製模板文件,切勿mv  
  2. sed -i 's@database_name_here@test@g' wp-config.php #指定鏈接數據庫  
  3. sed -i 's@username_here@testuser@g' wp-config.php #鏈接數據庫的用戶名  
  4. sed -i 's@password_here@123@g' wp-config.php  #鏈接數據庫的密碼 

三、打開物理機(Win7),進入wordpress作配置收尾工做
打開瀏覽器,輸入 mos.example.com
按提示,輸入用戶名,密碼,郵箱而後提交便可.

 

使用ab命令作簡單的壓力測試.

一、修改虛擬機hosts文件,使其解析域名mos.example.com

  
  
  
  
  1. echo -e '192.168.88.131\tmos.example.com\n192.168.88.131\twww.example.com' >> /etc/hosts  
  2.  
  3.  
  4. #追加完成後,直接使用ping mos.example.com和www.example.com測試

二、簡單的測試,譬如,200個用戶,同時每一個發10個請求到網頁根目錄的index.php文件

  
  
  
  
  1. ab -c 200 -n 2000   www.example.com/index.php 

 -c 有多少個用戶同時發送請求, -n 總共發出的請求數
下面貼出筆者一個測試的結果做爲範例註釋:

 

  
  
  
  
  1. This is ApacheBench, Version 2.3 <$Revision: 1373084 $>  
  2. Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/  
  3. Licensed to The Apache Software Foundation, http://www.apache.org/  
  4.         #一些版本相關信息等  
  5. Benchmarking mos.example.com (be patient)  
  6. Completed 200 requests  
  7. Completed 400 requests  
  8. Completed 600 requests  
  9. Completed 800 requests  
  10. Completed 1000 requests  
  11. Completed 1200 requests  
  12. Completed 1400 requests  
  13. Completed 1600 requests  
  14. Completed 1800 requests  
  15. Completed 2000 requests  
  16. Finished 2000 requests  
  17.  
  18.     #進度...  
  19. Server Software:        Apache/2.4.3 #軟件版本  
  20. Server Hostname:        mos.example.com #測試主機  
  21. Server Port:            80 #經過80端口  
  22.  
  23. Document Path:          /wp-login.php  #測試頁面wordpress登錄頁面  
  24. Document Length:        242 bytes  #測試頁面大小  
  25.  
  26. Concurrency Level:      200   #測試的併發請求數  
  27. Time taken for tests:   18.055 seconds  #測試總耗時  
  28. Complete requests:      2000    #所有請求書  
  29. Failed requests:        276 #失敗的請求  
  30.    (Connect: 0, Receive: 0, Length: 276, Exceptions: 0)  
  31. Write errors:           0         
  32. Non-2xx responses:      1724      
  33. Total transferred:      1771164 bytes    #一共傳輸的字節  
  34. HTML transferred:       999844 bytes #生成的html的內容傳輸總量  
  35. Requests per second:    110.77 [#/sec] (mean) #大概每秒能完成幾個  
  36. Time per request:       1805.550 [ms] (mean) #每一個請求大概耗時  
  37. Time per request:       9.028 [ms] (mean, across all concurrent requests) #相對於全部的併發請求,平均每一個用時多久  
  38. Transfer rate:          95.80 [Kbytes/sec] received  #傳輸速率...介個真心不高,估計是用的虛擬網卡緣故  
  39.  
  40. Connection Times (ms)    #鏈接時間  
  41.               min  mean[+/-sd] median   max 
  42. Connect:        0    7  22.6      0     140   #鏈接  
  43. Processing:    23 1667 2587.2    704   16935  #處理  
  44. Waiting:        0 1665 2587.3    704   16935  #等待  
  45. Total:         24 1674 2593.1    720   16968  
  46.  
  47. Percentage of the requests served within a certain time (ms)  
  48.   50%    720  
  49.   66%   1198  
  50.   75%   1562  
  51.   80%   2107  
  52.   90%   5423  
  53.   95%   7555  
  54.   98%   9908  
  55.   99%  12855  
  56.  100%  16968 (longest request)  
  57. #某個時間段的平均處理速率.  

 

 

 

 

 


Ps:    測試時,儘可能使用局域網測試,上面的結果,筆者的本地虛擬網卡,的傳輸速度太慢了,這估計是因爲vmware虛擬網卡自身的問題,這已經嚴重影響了測試的有效性.      測試時,能夠開多個控制檯,使用vmstat 1和top,以及網頁的status進行觀察系統滿載時的各類詳細參數.      ab測試時,儘可能使用多個頁面,屢次測試,去平均值爲最好,若測試的精細,可對XCache開啓和關閉的效果分別測試,以及apache的mpm的幾個工做模型作詳細修改測試,以及apache內各類配置的關閉和開啓後的效果測,方式都是同樣(筆者不少都正在測試).

相關文章
相關標籤/搜索