使用ApacheBench加载testing站点在EC2负载平衡器后面

当我尝试加载testing在EC2上负载均衡的站点时,我收到以下消息:

ab -n 20 -c 20 http://www.somesite.com/ Benchmarking www.somesite.com (be patient)...Send request failed! apr_socket_recv: Connection reset by peer (54) 

在没有负载均衡器的情况下,在EC2上托pipe的任何站点都可以成功进行负载testing,所以我认为它与我configuration的安全组无关。

AWS EC2负载平衡器是否默认阻止这种types的请求? 如果是这样,它如何区分AB和普通浏览器的HTTP请求?

AWS EC2负载平衡器是否默认阻止这种types的请求?

不是我所知道的 – 你偶然运行Mac OS X Lion吗? 在这个特定的操作系统发行版上似乎有一个运行ab的常见 bug ,根据在Mac OS X Lion上修复ApacheBench错误,可以find一个补丁(详情请参阅这里),尽pipe检查官方更新可能是值得的首先,至less这个补丁(或同等修补程序)至less在版本为httpd-2.3.15-beta的版本中已被合并(请参阅在OS X Lion上修复Apachebench )。

显然,你可以通过从不同的操作系统(版本)运行相同的testing来validation这一点(并将其作为解决方法)。

祝你好运!

当负载增加时,Amazon ELB将被放大。 当你每秒有5个请求时,你的负载平衡器不同于每秒运行1000个请求的人。 会发生什么情况是,当您在负载均衡器上运行testing时,它每秒从5个到1000个请求,负载均衡器无法处理负载,因此它将拒绝请求。 如果在testing运行时等待10-15分钟让负载均衡器放大,则应注意到所有请求都会完成。

如果您期望这会导致您的生产环境出现问题,Amazon可以手动升级您的负载平衡器。 我在云端设置了一个负载平衡器/自动扩展组,我们的stream量在周末1-2小时内可以从几百元到几千元不等,而且我们在运行时并没有看到这种行为在实际的生产环境中,我们只能用jmeter运行testing才能看到这个。

负载平衡器通常被configuration为限速或阻止看起来不像来自“真实浏览器”的请求,作为安全措施。 我怀疑这可能是这种情况; 我相信亚马逊有一些文档。

考虑从浏览器捕获真正的请求(使用Fiddler或Firebug),并添加可能需要使用ab的-H参数的头文件。 例如,您经常需要“主机”,“接受”和“接受编码”,或许使用看起来很现实的用户代理string。