結合上一章的LAMP,基本架構圖,以及簡單的優化。
客戶端請求訪問某php動態資源,訪問到httpd的地址,http通過代理將請求響應給後端的php,php接到請求後向數據庫調取數據,數據庫準備好數據返回給php,php將動態資源準備好後返回給http,http結合php的動態資源以及本地的靜態資源將動態php頁面返回給客戶端。
可以看看哪些大網站在使用LAMP架構。
1.)使用apache bench 對網站進行壓力測試。
簡稱ab,是apache自帶的壓力測試工具,可以通過測試得出apache每秒能響應多少個訪問。並且不侷限於對apache測試,也使測試nginx等web服務器。
命令選項:
-n: 總測試訪問次數 -c: 併發數 -t: 測試時指定時間,就是在固定的時間內對網站壓力測試 -p: POST數據文件 -v: 顯示詳細信息,可以跟多個-v選項
2.)指定訪問次數,併發數。
# ab -n 500 -c 100 http://bbs.zhang.com/upload/forum.php Requests per second: 23.94 [#/sec] (mean) #每秒完成23個響應 Time per request: 4177.809 [ms] (mean) #總請求耗費4177毫秒 Time per request: 41.778 [ms] (mean, across all concurrentrequests) #每個請求41毫秒 Transfer rate: 313.04 [Kbytes/sec] received #平均輸出速率 Requests per second: 27.44 [#/sec] (mean) Time per request: 3643.652 [ms] (mean) Time per request: 36.437 [ms] (mean, across all concurrentrequests) Transfer rate: 358.93 [Kbytes/sec] received Requests per second: 26.36 [#/sec] (mean) Time per request: 3793.345 [ms] (mean) Time per request: 37.933 [ms] (mean, across allconcurrent requests) Transfer rate: 344.77 [Kbytes/sec] received
3.)安裝php加速工具xcache。
xcache官方介紹:
Xcache是一個快速又穩定的PHP opcode緩存器,經過良好的測試在大流量/高負載的生產機器上穩定運行,支持線程安全/windows。
主要是xcache對於PHP新版本的支持比較好。
# tar xf xcache-3.0.3.tar.gz # cd xcache-3.0.3 # /usr/local/php5/bin/phpize #./configure --enable-xcache--with-php-config=/usr/local/php5/bin/php-config #make && make install /usr/local/php5/lib/php/extensions/no-debug-non-zts-20100525/ #這個在編譯安裝完成後生成的,後面需要用到。 #mkdir /etc/php.d # cp xcache.ini /etc/php.d/ #vim /etc/php.d/xcache.ini extension =/usr/local/php5/lib/php/extensions/no-debug-non-zts-20100525/xcache.so # service php-fpm restart
4.)同樣的併發數,訪問數再次測試。
整體還是提升了很多 Requests per second: 90.11 [#/sec] (mean) Time per request: 1109.771 [ms] (mean) Time per request: 11.098 [ms] (mean, across all concurrentrequests) Transfer rate: 1114.30 [Kbytes/sec] received
5.)開啓http網頁壓縮傳輸。
mod_deflate是aoache自帶的壓縮工具,模塊默認是註釋掉的。
這裏只是針對discuz單個虛擬主機做的傳輸壓縮,如果對所有的虛擬主機都進行傳輸壓縮,放到http.conf配置文件中即可。
# vim /etc/httpd/httpd.conf LoadModule deflate_module modules/mod_deflate.so # vim /etc/httpd/extra/httpd-vhosts.conf <VirtualHost *:80> ServerName bbs.zhang.com DocumentRoot "/var/www/php/Discuz" ProxyRequests Off ProxyPassMatch ^/(.*\.php)$fcgi://172.16.32.12:9000/var/www/php/Discuz/$1 <Directory "/var/www/php/Discuz"> Options none AllowOverride none Require all granted </Directory> SetOutputFilter DEFLATE AddOutputFilterByType DEFLATE text/plain #指定壓縮的類型 AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByTypeDEFLATE text/css AddOutputFilterByType DEFLATE application/x-httpd-php DeflateCompressionLevel 9 #壓縮級別 BrowserMatch ^Mozilla/4 gzip-only-text/html #特定的瀏覽器不壓縮傳輸 BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html </VirtualHost> #service httpd reload
再次查看ab壓力測試結果。
Requests per second: 101.69 [#/sec] (mean) Time per request: 983.361 [ms] (mean) Time per request: 9.834 [ms] (mean, across all concurrentrequests) Transfer rate: 1260.27 [Kbytes/sec] received Requests per second: 112.39 [#/sec] (mean) Time per request: 889.791 [ms] (mean) Time per request: 8.898 [ms] (mean, across all concurrentrequests) Transfer rate: 1392.96 [Kbytes/sec] received
總結:以上只是針對目前所簡單瞭解的進行的測試,沒有計算keepalive,以及event線程,php優化,和加入memcache等。
優化需要計算到服務器性能,內核優化,帶寬,及每日的訪問量,什麼時間段訪問次數多等等。