设置:ELB后面的EC2服务器自动缩放,连接到RDS mysql数据库,所有由cloudfront提供的静态文件。
我将nginx作为EC2服务器上的Web服务器运行,Keepalive设置为20,工作进程4,。 Codeigniter是后端并使用codeigniter会话。
我一直在运行大量的基准来试图测试性能,围攻,Apache基准,blitz.io。
我正在测试两个特定页面,第一个性能非常好,它使用codeigniter会话,因此碰到数据库以读取和更新ci_sessions数据库。第二页是我遇到麻烦的一页,它运行一个查询,其中有几个连接,只需一个用户大约0.4秒即可完成。这个查询已经过优化,我正在使用InnoDB表。在c10和n1000的apache基准测试下,100%的请求在634毫秒内返回。
当我运行并发用户> 200我开始遇到问题。增加更多的EC2服务器无济于事,CPU的利用率约为50%。 RDS数据库监视还显示CPU和内存使用率小于70%,并且平均DB连接< 35。
通过转向大型RDS实例和大型EC2实例,性能得到了改善,这让我怀疑I / O是否会在这里发挥作用。
如果我在加载测试期间在ELB外启动一个服务器并且打到这个页面,它会在不到一秒的时间内恢复,但是如果我在ELB内启动另一台服务器,它将保持4或5秒钟的时间。这表明我没有超载RDS。
我试图用5分钟的时间缓慢地加速ELB,这似乎没有帮助。
我想知道下一步要看这个问题,无论是某种I / O问题还是其他问题,因为RDS和EC2服务器似乎没有被推到他们的能力上。任何建议或想法在哪里看下一个将不胜感激