高负载WEB动态页面与静态页面的分离
2009-01-10 14:24
295 查看
试了一段时间的Lighttpd,表现的确不错,原先用APACHE只能跑到6K/S,改用Lighttpd后性能提升了将近一倍,只是跑PHP似乎很不稳定,数据库处理时间长一点就会到导致Lighttpd出现500的错误,也就是说要想使Lighttpd发挥更好的性能,除了优化程序还是优化程序,尽可能的加快PHP的执行速度,另外加上eAccelerator性能会有更大的提高。
说了这么多优点,再来说说公司最近所尝试的一些经验,PHP程序已被优化的不能再优化了,但是有时候操作一下数据库(比如执行mysqldump)就会出现500错误,并发量非常大的时候很容易出现,在这点上Lighttpd的表现就没有Apache稳定了,所以想了一个折中的办法,让Apache来处理PHP程序,其他的静态页面(包括图片、软件等等)全都交给Lighttpd来处理。而实现方法就是通过mod_proxy来实现,Apache做前端处理或Lighttpd做前端处理都行,反正这2种都有个mod_proxy模块,基本上一样。
下面就以CentOS 4.4系统下使用Apache(80端口)和Lighttpd(81端口)实现动态页面和静态页面的分离。
安装Lighttpd v1.4.13
将lighttpd=”/usr/sbin/lighttpd”改为lighttpd=”/usr/local/sbin/lighttpd”
编辑Lighttpd的配置文件lighttpd.conf,大致修改如下:server.modules = ("mod_access", "mod_simple_vhost", "mod_accesslog" )
server.document-root = "/var/www/html"
server.errorlog = "/var/log/lighttpd/error.log"
accesslog.filename = "/var/log/lighttpd/access.log"
server.port = 81
server.bind = “localhost”
simple-vhost.server-root = “/var/www/html/”
simple-vhost.default-host = “”
simple-vhost.document-root = “/”
server.username = “apache”
server.groupname = “apache”
至此Lighttpd基本上已经配置完成了,执行/etc/init.d/lighttpd start就开始监听81端口了。接下来就配置Apache,所要做的就是开启mod_rewrite和mod_proxy模块,大致修改如下:
至此,Apache也已配置完成,执行/etc/init.d/httpd start开始监听80端口。
为了使mod_proxy能够发挥更好的性能,还可以加 入mod_cache模块:
参考文档:
mod_proxy
: http://httpd.apache.org/docs/2.0/mod/mod_proxy.html
mod_cache
: http://httpd.apache.org/docs/2.0/mod/mod_cache.html
mod_rewrite
: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html
Lighttpd
http://www.lighttpd.net
说了这么多优点,再来说说公司最近所尝试的一些经验,PHP程序已被优化的不能再优化了,但是有时候操作一下数据库(比如执行mysqldump)就会出现500错误,并发量非常大的时候很容易出现,在这点上Lighttpd的表现就没有Apache稳定了,所以想了一个折中的办法,让Apache来处理PHP程序,其他的静态页面(包括图片、软件等等)全都交给Lighttpd来处理。而实现方法就是通过mod_proxy来实现,Apache做前端处理或Lighttpd做前端处理都行,反正这2种都有个mod_proxy模块,基本上一样。
下面就以CentOS 4.4系统下使用Apache(80端口)和Lighttpd(81端口)实现动态页面和静态页面的分离。
安装Lighttpd v1.4.13
# yum install pcre-devel # cd /usr/local/src # wget http://www.lighttpd.net/download/lighttpd-1.4.13.tar.gz # tar -zxvf lighttpd-1.4.13.tar.gz # cd lighttpd-1.4.13 # ./configure --with-pcre # make # make install # cd doc # cp sysconfig.lighttpd /etc/sysconfig/lighttpd # cp rc.lighttpd.redhat /etc/init.d/lighttpd # chkconfig lighttpd on # mkdir -p /etc/lighttpd # cp lighttpd.conf /etc/lighttpd/ # mkdir /var/log/lighttpd # touch /var/log/lighttpd/access.log # touch /var/log/lighttpd/error.log # chown -R apache:apache /var/log/lighttpd
# vi /etc/init.d/lighttpd
将lighttpd=”/usr/sbin/lighttpd”改为lighttpd=”/usr/local/sbin/lighttpd”
编辑Lighttpd的配置文件lighttpd.conf,大致修改如下:server.modules = ("mod_access", "mod_simple_vhost", "mod_accesslog" )
server.document-root = "/var/www/html"
server.errorlog = "/var/log/lighttpd/error.log"
accesslog.filename = "/var/log/lighttpd/access.log"
server.port = 81
server.bind = “localhost”
simple-vhost.server-root = “/var/www/html/”
simple-vhost.default-host = “”
simple-vhost.document-root = “/”
server.username = “apache”
server.groupname = “apache”
至此Lighttpd基本上已经配置完成了,执行/etc/init.d/lighttpd start就开始监听81端口了。接下来就配置Apache,所要做的就是开启mod_rewrite和mod_proxy模块,大致修改如下:
LoadModule rewrite_module modules/mod_rewrite.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_connect_module modules/mod_proxy_connect.so <VirtualHost *:80> ServerAdmin <a href="mailto:webmaster@sofee.cn">webmaster@sofee.cn</a> DocumentRoot /var/www/html/test.sofee.cn ServerName test.sofee.cn <IfModule mod_rewrite.c> RewriteEngine On # RewriteLog logs/rewrite_log # RewriteLogLevel 1 RewriteRule "^/((.*).(js|css|htm|html|swf|gif|jpg|png|ico|exe|zip|rar))$" "http://0.0.0.0:81/$1" [P,QSA,L] RewriteRule "^/(.*)" "$0" [L] </IfModule> <IfModule mod_proxy.c> ProxyRequests Off ProxyPreserveHost On ProxyReceiveBufferSize 16384 ProxyTimeout 300 ProxyPassReverse / http://0.0.0.0:81/ </IfModule> </VirtualHost>
至此,Apache也已配置完成,执行/etc/init.d/httpd start开始监听80端口。
为了使mod_proxy能够发挥更好的性能,还可以加 入mod_cache模块:
LoadModule cache_module modules/mod_cache.so LoadModule disk_cache_module modules/mod_disk_cache.so LoadModule mem_cache_module modules/mod_mem_cache.so <IfModule mod_cache.c> <IfModule mod_mem_cache.c> CacheEnable mem / MCacheSize 10240 MCacheMaxObjectCount 100 MCacheMinObjectSize 1 MCacheMaxObjectSize 2048 </IfModule> <IfModule mod_disk_cache.c> CacheRoot /var/cache/mod_proxy CacheEnable disk / CacheDirLevels 5 CacheDirLength 3 </IfModule> </IfModule>
参考文档:
mod_proxy
: http://httpd.apache.org/docs/2.0/mod/mod_proxy.html
mod_cache
: http://httpd.apache.org/docs/2.0/mod/mod_cache.html
mod_rewrite
: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html
Lighttpd
http://www.lighttpd.net
相关文章推荐
- Nginx + Apache 高负载WEB动态页面与静态页面的分离
- 高负载WEB动态页面与静态页面的分离
- 高负载WEB动态页面与静态页面的分离
- nginx+apache实现动静态页面分离的web生产环境(二)
- Web开发 -- 静态页面与动态页面
- 关于Web的动态页面与静态页面分开的想法.
- 【WEB静态页面架构经典】架构一个可承受千万级访问量的动态扩展CMS
- nginx+apache实现动静态页面分离的web生产环境(一)
- 使用nginx+tomcat实现静态和动态页面的分离
- 自己动手写Web容器之TomJetty之六:动态页面引入
- nginx+tomcat集群配置(2)---静态和动态资源的分离
- CodeIgniter web框架学习(1)-- view、controller之间的关系,及静态页面的加载实例
- 动态页面,静态页面,伪静态页面的区别
- 实现Web页面内容动态改变的dhtml操作
- 静态页面中使用的一些动态
- WEB页面采集器编写经验之一:静态页面采集器
- 静态页面之间的转发与json与ajax做到动态数据
- 静态web和动态web的区别与联系
- SEO重大利好!不用再把动态页面伪装成静态页面了!
- ASP.NET 动态转静态页面的两种方法总结 - 动态页面转换成HTML静态页面方法