我将尝试从我的案例中的现实生活示例开始:
我的网站每天有大约60,000页的浏览量(在高峰时段,由于谷歌实时分析,网站上有100位活跃访问者)。的的Django + MySQL的+阿帕奇即可。 1个 1024M RAM 和 4core CPU 的Linode服务器,以及用于存储静态文件的 amazon S3 服务。事实证明,它现在已达到瓶颈(响应缓慢的高峰时间)。
我能看到的一件事是从内存中,高峰时间消耗了近91%的内存。但不确定是否还存在其他一些瓶颈。
2个问题:
1:哪里:如果我想解决这个问题,我需要确切地知道问题所处的位置。所以我想知道如何衡量瓶颈在哪里?
2:如何:我如何解决内存瓶颈问题?我能想到的一种方法是简单地添加更多内存,或使用负载平衡器添加更多机器(确定它更昂贵......)。另一种方式,不确定,但可能从apache更改为nginx?
修改:
您还可以在此处看到top
命令生成的内存使用情况,30个apache实例,每个实例消耗2%( 20M )的内存。
http://codepad.org/pUYdZhWq
答案 0 :(得分:2)
如果不了解网站的行为方式,就很难提出建议。而需要回答的问题清单是巨大的。简而言之,如果你要支付一个合格的人来调查这个问题,那么在服务器中放置另一个内存会花费你太多。
OTOH,如果我是付钱解决问题的人,那么我要看的第一件事就是服务器的速度 - 快速转换请求意味着内存中的请求减少,意味着使用更少的内存通过Web服务器(以及更多缓存/缓冲区)。因此,开始测量您的响应时间(%D)并分析数据。确保您正在使用操作码缓存,并为您的PHP(ob_gzhandler())启用输出压缩,并为Web服务器上的CSS javascript和html文件启用压缩。确保你已经从Apache中删除了所有未使用的模块,并且使用一个合理的值来保持keepalive超时(2秒或更短)。如果你正在运行任何COMET的东西,那么肯定你应该切换到nginx,否则好处是有限的。