VMWare ESXi,RHEL,LUKS和网络延迟

问题描述:

我的公司遇到了一个网络性能问题,似乎我们正在使用的所有“专家”(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毫秒。这是在一台笔记本电脑上发生的事情!

任何指针/技巧/解决方案将不胜感激!

经过仔细审查并将不良虚拟机与高性能虚拟机进行比较后,我们将该问题确定为高级“延迟敏感性”设置的错误选择。

对于我们运行状况不佳的虚拟机,此设置为“低”。将设置更改为“正常”并重新启动虚拟机之后,延迟降低了约100倍,并且吞吐量(我们本来没有注意到的也是一个问题)增加了约250倍!