VMWare ESXi、RHEL、LUKS 和网络延迟
Posted
技术标签:
【中文标题】VMWare ESXi、RHEL、LUKS 和网络延迟【英文标题】:VMWare ESXi, RHEL, LUKS and network latency 【发布时间】:2016-10-31 15:02:27 【问题描述】:我的公司遇到了一个网络性能问题,似乎让我们正在与之合作的所有“专家”(VMWare 支持、RHEL 支持、我们的托管服务托管提供商)都陷入了困境。
问题在于,我们的虚拟机(甚至位于同一物理主机上的虚拟机)之间的网络延迟会随着网络吞吐量的增加而增加——高达 100 倍或更多!例如,在没有任何网络负载的情况下,延迟(通过 ping 测量)可能约为 0.1 毫秒。开始传输几个 100MB 的文件,延迟增长到 1ms。在两个 VM 之间启动一堆(约 20 个左右)并发数据传输,VM 之间的延迟可能会增加到 10 毫秒以上。
这对我们来说是个大问题,因为我们有应用服务器虚拟机托管进程,每小时可能会针对数据库服务器(不同的虚拟机)发出 100 万次左右的查询。因此,为每个查询增加一到两毫秒会大大增加我们的运行时间——有时会使我们的预期持续时间增加一倍或三倍。
我们拥有我认为非常标准的环境:
ESXi 6.0u2 4 个戴尔 M620 刀片,配备 2 个 Xeon E5-2650v2 处理器和 128GB RAM SolidFire SAN我们的基本虚拟机配置包括:
RHEL7,最小安装 为 /boot、/、/var/log、/var/log/audit、/home、/tmp 和 swap 的挂载点配置了多个 LUN 所有分区除了 /boot 使用 LUKS 加密(通过 LVM)我们的数据库服务器虚拟机正在运行 Postgres 9.4。
我们已经尝试了以下方法:
将虚拟网卡从 VMNETx3 更改为 e1000 并返回 调整 RHEL 以太网堆栈设置 为虚拟机使用 ESXi 的“低延迟”选项 将我们的主机和 vCenter 从 ESX 5.5 升级到 6.0u2 创建用于测试的准系统 VM(使用 LUKS 等进行上述设置,但没有我们的任何生产服务) 将数据存储从 SSD SolidFire SAN 移动到本地(刀片上)旋转存储这些都没有改善网络延迟。唯一显示预期(非恶化)延迟的测试是我们设置第二对准系统虚拟机没有 LUKS 加密。不幸的是,我们需要完全加密的分区(我们为其管理密钥),因为我们正在处理受监管的敏感数据。
我不明白 LUKS——就其本身而言——在这里应该受到责备。相反,我怀疑使用 ESX、我们的托管硬件和/或我们的 VM 硬件配置的某种组合运行的 LUKS 是罪魁祸首。
我在更简陋的环境中进行了测试(MacBook Pro、i5、8GB RAM、VMWare Fusion 6.0、Centos7 虚拟机配置与 LVM 上的 LUKS 和相同的测试脚本类似),但无法重现延迟问题。无论我在虚拟机之间发送多少网络流量,延迟都保持稳定在 0.4 毫秒左右。这是在一台笔记本电脑上发生的大量事情!
任何指针/提示/解决方案将不胜感激!
【问题讨论】:
【参考方案1】:经过大量审查并将性能不佳的虚拟机与性能良好的虚拟机进行比较后,我们确定该问题是高级“延迟敏感度”设置的错误选择。
对于我们性能不佳的虚拟机,此设置为“低”。将设置更改为“正常”并重新启动 VM 后,延迟下降了约 100 倍,吞吐量(我们最初没有注意到也是一个问题)增加了约 250 倍!
【讨论】:
以上是关于VMWare ESXi、RHEL、LUKS 和网络延迟的主要内容,如果未能解决你的问题,请参考以下文章
如何通过ESXI5对vmware vsphere client关机的解决方法和步骤