结合上一章的LAMP,基本架构图,以及简单的优化。


wKioL1Pt7oait_TjAAFXL_24FqE766.jpg

客户端请求访问某php动态资源,访问到httpd的地址,http通过代理将请求响应给后端的php,php接到请求后向数据库调取数据,数据库准备好数据返回给php,php将动态资源准备好后返回给http,http结合php的动态资源以及本地的静态资源将动态php页面返回给客户端。

可以看看哪些大网站在使用LAMP架构。

wKiom1Pt71yDk3cvAAE8z2pnpdQ247.jpg


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等。

优化需要计算到服务器性能,内核优化,带宽,及每日的访问量,什么时间段访问次数多等等。