测试Amazon EC2,RDS和ELB性能

Sch*_*iss 3 amazon-ec2 load-testing performance-testing amazon-web-services amazon-rds

我有一个PHP应用程序,我在亚马逊的Web服务上运行.这是一个相对简单的PHP脚本,基本上可以简单地写入SQL数据库.此数据库是Xtra Large RDS实例.PHP在负载均衡器后面的大型EC2实例上运行.

我想做的是强调测试我的脚本,以模拟同时连接的大约800个用户(是的,这确实是估计).

我听说过Siege,但我不知道如何使用它来测试我的应用程序.如果我尝试从家里的连接运行它,我不确定我的PC/ADSL是否足够快以创建足够的流量来模拟800个用户同时攻击EC2(因此RDS).

是否可以在另一个区域中启动另一个EC2实例来简单地"围攻"我的应用程序?或者可能运行2个EC2实例,每个实例都有400个用户!

希望这能够彻底测试负载平衡,RDS和EC2.

有没有人有这种高并发用户测试的经验?

安迪

Oli*_*oyd 8

我写了一个脚本,可能与你所需要的帮助,详情点击这里,源在这里.

但首先,真的,这是最重要的事情,你需要考虑什么定义'用户'.虽然从描述性术语来看似乎很明显,但从技术角度来说,您需要开始讨论每秒的请求.

既然bug已经不在了,要使用ELB对Amazon运行负载测试,您可能需要了解一些事情.

  1. 在这种负载下,你很可能需要让亚马逊"预热"一些东西.上次我调查这个时发现ELB本质上是一个在简单实例上运行的软件负载均衡器.与所有事情一样,这些实例具有吞吐量限制,并且倾向于每秒大约(非常模糊)40个请求.它们会自动缩放,但是这个算法不适合负载测试,所以预热是亚马逊事先调整X ELB,其中X基于您在请求中提供给他们的信息(请参阅我的第一个点,即每秒请求数,而不是用户) ).

  2. ELB可以缓存DNS,在负载测试中可能会导致问题.如果您的测试工具是基于Java的(如JMeter),请使用:-Dsun.net.inetaddr.ttl = 0

无论您选择哪种解决方案,都要非常清楚您的测试本身可能成为瓶颈,您应该在归咎于您正在测试的应用程序之前先检查一下.