我有2个负载均衡的Apache虚拟服务器,每分钟处理几千个请求,我试图诊断瓶颈,这是放缓他们。
我的networking服务器每个都有一个虚拟网卡,而他们的VMWare主机每个都有7个千兆网卡。 所有这些物理网卡都可以连接到100Mb / s的交换机端口。
起初,我认为VMWare主机会聚合所有可用的带宽,并根据需求将其分配给虚拟机。 但是,现在我想知道如果我错了。
我的同事向我解释,如果我只有一个虚拟网卡在一个虚拟机,它将绑定到一个物理网卡,而不是聚合所有的带宽 – 那么在我的情况下,这是有限的交换机端口的带宽为100 Mb / s。 那是对的吗?
另外,两个100Mb / s的连接(每个服务器上的连接)是否会成为每分钟处理1000-2000个请求的站点的瓶颈?
就NIC组合而言,你的同事或多或less是正确的。
默认情况下,ESX中的网卡绑定将虚拟机中的每个虚拟网卡映射到与其连接的vSwitch上的一个上行链路(物理网卡)。 具体的NIC加载冲突策略是:
在这三个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%,那么您会做得很好。
这只是为了得到一个粗略的想法,如果链接可以承载原始数据带宽。 为了更接近特定链接可以处理的事情,还需要考虑所涉及的所有握手,客户端与服务器之间的端到端延迟,架构可以保留的并发连接数以及其他许多因素。