VMWare ESX虚拟机上的带宽瓶颈

我有2个负载均衡的Apache虚拟服务器,每分钟处理几千个请求,我试图诊断瓶颈,这是放缓他们。

我的networking服务器每个都有一个虚拟网卡,而他们的VMWare主机每个都有7个千兆网卡。 所有这些物理网卡都可以连接到100Mb / s的交换机端口。

起初,我认为VMWare主机会聚合所有可用的带宽,并根据需求将其分配给虚拟机。 但是,现在我想知道如果我错了。

我的同事向我解释,如果我只有一个虚拟网卡在一个虚拟机,它将绑定到一个物理网卡,而不是聚合所有的带宽 – 那么在我的情况下,这是有限的交换机端口的带宽为100 Mb / s。 那是对的吗?

另外,两个100Mb / s的连接(每个服务器上的连接)是否会成为每分钟处理1000-2000个请求的站点的瓶颈?

就NIC组合而言,你的同事或多或less是正确的。

默认情况下,ESX中的网卡绑定将虚拟机中的每个虚拟网卡映射到与其连接的vSwitch上的一个上行链路(物理网卡)。 具体的NIC加载冲突策略是:

  • 端口ID:根据端口号将来自每个虚拟NIC的所有stream量映射到一个上行链路。
  • 源MAC哈希:来自每个虚拟NIC的所有stream量都基于虚拟NIC的MAC地址的哈希映射到一个上行链路
  • IP哈希值:基于IPstream量的源IP地址和目的IP地址的哈希用于select上行链路。

在这三个IP哈希会给你任何聚合效果。 ESX只能控制出站stream量pathselect,以便正确分配入站和出站stream量,您的物理交换机也必须针对端口聚合(Etherchannel \ LACP)进行适当configuration。

有关如何configuration各种交换机(Cisco \ HP) 的非常有用的VMware知识库文章,以便分发入站stream量(交换机必须决定pathselect)和出站(ESX处理pathselect的位置)。

请注意,这些策略都不会导致stream量分布在多个上行链路上,用于单个源IP地址和单个目标之间的stream量,它们仅在涉及一定范围的IP地址时才提供聚合。

回答你的第二个问题 – 这取决于每个请求涉及多less数据。 单个100M的连接可以通过大约8000个数据包/秒,如果有效载荷大小远小于1500个字节,则可能更多。 然而,如果一个典型的请求涉及到30K的数据,那么(大规模简化事务并忽略开销),那么每个请求将需要20个数据包才能完成,所以NIC理论上可以处理大约250个这样的请求/秒。 如果您的请求平均涉及1M的stream量,那么您最多只能达到每秒7/8个请求,而在正常情况下,如果您得到的实际数量超过这些速率的50%,那么您会做得很好。

这只是为了得到一个粗略的想法,如果链接可以承载原始数据带宽。 为了更接近特定链接可以处理的事情,还需要考虑所涉及的所有握手,客户端与服务器之间的端到端延迟,架构可以保留的并发连接数以及其他许多因素。