我的公司遇到了一個網絡性能問題,似乎我們正在使用的所有「專家」(VMWare支持,RHEL支持,託管服務託管提供商)都難倒了。VMWare ESXi,RHEL,LUKS和網絡延遲
問題在於我們的虛擬機(即使駐留在同一物理主機上的虛擬機)之間的網絡延遲增加 - 高達100倍或更多! - 具有網絡吞吐量。例如,沒有任何網絡負載,延遲(通過ping測量)可能爲〜0.1ms。開始傳輸幾個100MB文件,延遲時間增長到1ms。在兩臺虛擬機之間啓動大量(大約20個)併發數據傳輸,並且虛擬機之間的延遲可以增加到10ms以上。
這對我們來說是一個巨大的問題,因爲我們有應用程序服務器虛擬機承載的進程可能每小時對數據庫服務器(不同的虛擬機)發出100萬左右的查詢。因此,爲每個查詢添加一兩毫秒的數據可以大大增加我們的運行時間 - 有時會使我們的預期持續時間增加一倍或三倍。
我們已經得到了什麼,我會認爲這是一個非常標準的環境:
- 的ESXi 6.0u2
- 4個戴爾M620刀片,2個至強E5-2650v2處理器和128GB RAM
- SolidFire SAN
而且我們的基本虛擬機配置包括:
- RHEL7,配置爲掛載點的/ boot,/在/ var /日誌/無功/日誌/審計,/家,/ tmp和交換
- 所有分區除了 /啓動最小安裝
- 多個LUN使用LUKS加密(通過LVM)
我們的數據庫服務器虛擬機正在運行Postgres 9.4。
我們已經嘗試了以下內容:
- 變化從VMNETx3虛擬網卡E1000和背部
- 調整RHEL以太網堆棧設置
- 使用的ESXi的「低延遲」選項爲虛擬機
- 將我們的主機和vCenter從ESX 5.5升級到6.0u2
- 創建裸骨骼虛擬機(如上面的LUKS等設置,但沒有我們的任何生產服務)用於測試
- 移動從SSD SolidFire SAN數據存儲到本地(在刀片)紡絲存儲
無這些改進的網絡延遲。顯示預期(不惡化)延遲的唯一測試是當我們設置第二對裸機虛擬機而不使用 LUKS加密時。不幸的是,我們需要完全加密的分區(我們爲其管理密鑰),因爲我們正在處理受監管的敏感數據。
我不明白LUKS本身如何能夠歸咎於此。相反,我懷疑LUKS與ESX,我們的託管硬件和/或我們的虛擬機硬件配置的組合是運行的責任。
我在一個非常微不足道的環境(MacBook Pro,i5,8GB內存,VMWare Fusion 6.0,CentOS7虛擬機在LVM上使用LUKS配置類似的測試腳本)和相同的測試腳本進行了測試,無法重現延遲問題。無論我在VM之間發送多少網絡流量,延遲都保持穩定在大約0.4毫秒。這是在一臺筆記本電腦上發生的事情!
任何指針/技巧/解決方案將不勝感激!