结合上一章的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等。
优化需要计算到服务器性能,内核优化,带宽,及每日的访问量,什么时间段访问次数多等等。