我们一直在与HAProxy战斗几天,现在在亚马逊EC2;迄今为止的体验非常棒,但我们一直在阻止软件负载平衡器获得更多性能。我们并不完全是Linux网络专家(我们通常是.NET商店),但是我们迄今为止一直都在持有我们自己的,试图设置适当的限制,检查内核消息和tcpdump是否存在任何违规行为。 到目前为止,我们已经达到约1,700个请求/秒的高峰,此时客户端超时(我们一直在使用和调整httperf用于此目的)。一位同事和我正在倾听最近的Stack Overflow播客,其中Reddit创始人指出他们的整个网站运行一个HAProxy节点,而且迄今为止它还没有成为瓶颈。确认!要么不知道有多少并发请求,我们做的是非常错误的事情,或者EC2的共享特性限制了Ec2实例的网络堆栈(我们使用的是大型实例类型)。考虑到Joel和Reddit创始人都认为网络可能会成为限制因素,这有可能是我们看到的限制吗?Amazon EC2中的负载平衡?
任何想法非常感谢!
编辑看起来实际问题并不是实际上与负载平衡器节点!罪魁祸首实际上是运行httperf的节点,在这种情况下。由于httperf针对每个请求构建和拆分套接字,因此它会在内核中花费大量CPU时间。当我们提高请求速率时,TCP FIN TTL(默认为60s)会导致套接字过长,并且ip_local_port_range的默认值对于此使用情况来说太低。基本上,在客户端(httperf)节点持续创建和销毁新套接字几分钟后,未使用端口的数量用完,并且在此阶段后续“请求”出错,产生低请求/秒数和大量的错误。
我们也看过nginx,但我们一直在使用RighScale,他们已经有了HAProxy的插件脚本。噢,当然,我们的时间太紧[当然]要切换组件,除非它证明绝对必要。实际上,在AWS上允许我们使用nginx并行地测试另一个设置(如果有保证的话),并在晚些时候进行切换。
This page很好地描述了每个sysctl变量(在这种情况下调整了ip_local_port_range和tcp_fin_timeout)。
Marc,你应该写下你配置这些东西的经验,并将它们发布到某处(你的公司是否有博客?)。听起来好像对很多人有用。 Upvoted你的问题。 – SquareCog 2008-11-07 06:55:56
您的链接已损坏。 – Ztyx 2015-05-19 19:20:14
@Ztyx谢谢!只是更新了它。我搜索了一个更新,更新的源代码,看起来原来的网站仍然有很高的PageRank,内容还是很不错,所以我只是纠正它以反映新的URL。 – 2015-05-20 21:27:35