为了保证网站的稳定性,就对几款其他的软件进行了试用,并且测试。
相关web软件:
cherokee 0.98.1 fastcgi
apache2.2.10 mod_php5 perfork
前端代理软件:
varnish 2.0.4
squid 2.7stable
开始测试时,都将各个软件调整到最有配置。比如apache开始mem_cache
在经历了n个小时的测试之后,大体有了结果:>>表示远远大于
静态页面速度
低并发cherokee<>apache,apache甚至也能大于cherokee,可能是我开启了缓存
高并发(400)cherokee是apache的2倍
内存消耗
php执行速度(无论是否连接数据库)
apache>>cherokee
高并发下(30000个请求400个并发)apache常常挂掉,内存消耗巨大,cherokee执行php速度远慢于apache,但一直能保持速度,内存占用极小
特别发现,cherokee在执行带有数据库连接的php页面是,速度只有apache的1/5,甚至更低
优化措施
在前端加上varnish或者squid
cherokee无法提供gzip等压缩功能,apache正常
cherokee执行php使用的是fastcgi,但是测试中fastcgi无法加载eaccelerator,再次少了一个加速工具。apache正常
cherokee的亮点:
1、有很好的管理界面,棒极了!
2、可以对每个虚拟主机加入ssl支持。apache只有一个。
varnish是纯内存缓存软件,专门的web加速。squid是mem+disk,专门的代理软件。两者的目的都不一样
使用中发现,varnish可以直接支持web服务器的www验证,squid还需要配置,挺麻烦。
对比结果,我对服务器采用了下列架构
后端apache+cherokee(后备),前端squid(+varnish)
squid使用两个数据源,apache优先
apache挂掉的时候,cherokee上
前端也有varnish,只不过是squid已经配置了。不用再动。
日常中,varnish和squid都处于配置完成状态,都从apache和cherokee获取数据。
其中一个挂了,直接启动另外一个就可以了。等于做了2*2的冗余。
前端采用squid,是因为还对varnish不是很熟悉。但是已经知道varnish的实时运行状态查看比较方便。
另外,varnish的后端负载均衡没有优先权(可能是我不知道)。这样的话,就没有办法实现我的初衷,并且varnish后的cherokee无法执行页面压缩。