经过一段时间的学习,总结网站服务器的搭建优化的若干笔记。
两台虚拟机:Red Hat Enterprise Linux Server release 5.4 (Tikanga) 内核:2.6.18-164.el5
kangta01=192.168.1.142
kangta02=192.168.1.141
nginx前端=192.168.1.141:80(负载均衡)
varnish中间缓存=192.168.1.141:9090(kangta02)
varnish中间缓存=192.168.1.142:80(kangta01)
nginx后端=192.168.1.141:7070
nginx后端=192.168.1.142:7070
mysql数据库=192.168.1.142:3306
Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,并且在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用,这次我网站后端采用nginx-0.8.53+php-5.2.14(FastCGI)+mysql-5.5.3-m3
服务器上的并发连接测试(因为webbench会耗掉本身的内存与负载)
效果是500个并发连接在20秒内,nginx的负载只去到20%,对于虚拟机600M的内存相当可观的
每分钟可以打开2250个页面的速度,负载跟并发连接功能起到很好的作用
nginx-0.8.53+php-5.2.14(FastCGI)+mysql-5.5.3-m3 的配置可参考另一篇日记
中间采用varnish做缓存代理
Varnish采用了“Visual Page Cache”技术,在内存的利用上,Varnish比Squid具有优势,它避免了Squid频繁在内存、磁盘中交换文件,性能要比Squid高
(因为本人在squid的配置上认识不深,日后再配置用squid做缓存代理的实验)
Varnish的配置请看另一篇日记
搭好实验环境
做压力测试,采用另一台客户机做并发连接
客户机的并发连接数为800,持续时间为1分30秒
服务器的IP为192.168.1.141,试的Web连接方式,这里的方式Verb选择 get,path选择要测试的Web页面路径,这里填写/Index.php即动网的首页文件
客户机与服务器建立的连接
服务器端的负载top图
综合以上的测试效果,并发数800,连接时间为1分30秒时
kangta02的负载只达到5-6左右
kangta01上有mysql,负载较高,去到20左右
因为nginx前端做了负载均衡,根据两台虚拟机上应用不同,为了达到性能上的平均
nginx前端分发到192.168.1.142的并发连接少于192.168.1.141的并发连接
weight值与访问量成正比
从varnish的命中率上来看
192.168.1.141这台接受的客户端并发连接请求去到了两万多个(因为综合多次压力测试)
192.168.1.142因为前端负载的设置,客户端的并发连接只有一万四千多个
在压力测试过程,用浏览器去访问,varnish的命中率也有50%的命中率,在800连接数的压力下,访问的速度也很快(命中率只是拿几个测试而已)
这就是网站架构的优化,各层功能展开后的效果,仅供参考
消耗是CPU,内存只占相当一部分
并发连接数为3000,持续时间为2分钟的压力测试
nginx+php+varnish的负载只去到15左右
nginx+php+varnis+mysql的负载去到了80,可见mysql对内存及cpu的消耗是很大的,建议单独使用一台服务器装mysql
压力测试下的访问速度一般,但varnish下的缓存命中率依然可以达到50%以上
因为机子的性能问题,便不再做压力测试了