Apache-2.2

VMWare ESX 虛擬機上的頻寬瓶頸

  • February 9, 2013

我有 2 個負載平衡的 apache 虛擬伺服器,每分鐘處理幾千個請求,我正在嘗試診斷減慢它們的瓶頸。

我的網路伺服器每個都有一個虛擬網卡,他們的 VMWare 主機每個都有 7 個千兆網卡。所有這些物理網卡都饋入 100Mb/s 交換機埠。

起初,我認為 VMWare 主機會聚合所有可用的頻寬,並根據需要將其分配給虛擬機。但是,我現在想知道我是否錯了。

我的同事向我解釋的方式是,如果我在 VM 中只有一個虛擬NIC,它將綁定到一個物理 NIC,而不是匯總所有這些 NIC 的頻寬 - 所以在我的情況下,這是受交換機埠的頻寬為 100 Mb/s。 那是對的嗎?

此外,兩個 100Mb/s 連接(每台伺服器上一個)是否會成為每分鐘僅處理 1000-2000 個請求的站點的瓶頸?

就 NIC 團隊而言,您的同事或多或少是正確的。

預設情況下,ESX 中的 NIC 綁定將 VM 中的每個虛擬 NIC 映射到它所連接的 vSwitch 上的*單個上行鏈路(物理 NIC)。*具體的網卡負載均衡策略有:

  • 埠 ID:來自每個虛擬網卡的所有流量都根據埠號映射到一個上行鏈路。
  • 源 Mac 雜湊:來自每個虛擬 NIC 的所有流量都根據虛擬 NIC 的 MAC 地址的雜湊映射到一個上行鏈路
  • IP 雜湊:基於 IP 的流量的源和目標 IP 地址的雜湊用於選擇上行鏈路。

在這三個中,只有 IP 散列會給您帶來任何聚合效果。ESX 只能控制出站流量路徑選擇,因此要正確分配入站和出站流量,您的物理交換機還必須針對埠聚合 (Etherchannel\LACP) 進行適當配置。

這裡有一篇非常有用的 VMware 知識庫文章,介紹如何配置各種交換機 (Cisco\HP),以便分配入站流量(交換機必須決定路徑選擇)和出站流量(ESX 處理路徑選擇)。

請注意,這些策略都不會導致流量在單個源 IP 地址和單個目標之間的流量分佈在多個上行鏈路上,它們僅在涉及一系列 IP 地址時提供聚合。

要回答您的第二個問題 - 這取決於每個請求涉及多少數據。單個 100Megabit 連接可以通過大約 8000 個數據包/秒,如果有效負載大小遠小於 1500 字節,則可能更多。但是(大大簡化事情並忽略成本)如果一個典型的請求例如涉及 30k 的數據,那麼每個請求將需要 20 個數據包才能完成,因此 NIC 理論上可以處理大約 250 個這樣的請求/秒。如果您的請求平均涉及 1Meg 的流量,那麼您最多只能每秒處理 7/8 個請求,在正常情況下,如果您的實際數字大於這些速率的 50%,我會說您會做得很好。

這只是為了大致了解鏈路是否可以承載原始數據頻寬。為了更接近特定連結可以處理的內容,您還需要考慮所有涉及的握手、客戶端和伺服器之間的端到端延遲、您的架構可以保持多少並發連接以及其他很多。

引用自:https://serverfault.com/questions/107784