我的配置非常简单:Windows Server 2012 Hyper V Host,带有两个虚拟机(均为 Server 2012),一个用于 IIS,一个用于 SQL Server。它们都通过物理 NIC 进行连接
昨晚我尝试添加一个虚拟交换机,并在两个虚拟机上设置虚拟网卡(除了物理网卡)。
我还没有将服务器切换为实际使用虚拟网卡,但出于某种原因,这破坏了两个虚拟机之间的连接速度——即使虚拟网卡未被使用。我们说的是每个请求需要 200-500 毫秒到 30-90 秒!
所以今天早上,在看到它对我的网站造成的严重影响后,我禁用了两个虚拟网卡,因为这就是我所改变的一切,果然,速度又恢复了。
最终我需要让它们切换到使用 v-NIC,但我需要先解决这个问题。
这可能是什么原因造成的?我该如何解决它?
额外细节:
设置实际上非常简单(这可能是我的问题的一部分,我可能过于简化了设置所需的内容)。
我有一台带有单个(物理)NIC 的单台服务器。目前,此 NIC 用于 v-host 与互联网之间的通信,以及两个虚拟机与互联网之间的通信。它还用于两个虚拟机之间的内部通信。
但是,我正在尝试将内部通信切换为通过 vNIC 经过虚拟交换机,从而释放物理 NIC 仅用于外部通信。
因此我向 v-host 添加了一个内部虚拟交换机,然后向每个 VM 添加了一个虚拟 NIC。
执行此操作后,我的连接速度(通过物理 NIC)急剧下降。禁用 vNIC(通过虚拟机的网络配置)后,速度恢复正常。
下面是外部物理 NIC 和内部 vNIC 的 VM 配置屏幕(仅在一台 VM 上,因为它们的配置相同)。
另一轮细节
进一步深入研究该问题后发现,Broadcom NIC 因性能问题而臭名昭著。此服务器具有双 Broadcom BCM5716C NIC。以下是一些已知问题讨论的链接:
虚拟机内网络访问缓慢 - Broadcom 和 Hyper-V
Hyper-V 虚拟机网络非常慢 – VMQ – Broadcom
于是我开始尝试各种设置,一次禁用各种设置。这些更改似乎都对问题没有任何影响——如果我启用客户 vNIC,加载速度会下降到 25 秒以上。再次禁用它,它们会恢复到 250 毫秒——100 倍!
我也尝试安装 Broadcom 的最新驱动程序,但没有什么区别。
此时,我觉得这是 Broadcom NIC 与 Hyper-V 之间的兼容性问题。但我不想订购新的 NIC,并费尽周折关闭站点、安装和配置它们,而问题却一直存在。
所以如果我能明确地确定 NIC 是否有效就好了。
交换机管理器上的物理网卡配置
交换机管理器上的虚拟交换机配置
DB VM 上的物理网卡配置
DB VM 上的虚拟网卡配置
答案1
我有一个非常相似的设置。我在这里找到了答案(本地计算机上的文件传输到 Hyper-V VM 的速度极慢)
使用 Broadcom 芯片组后,我禁用了虚拟队列,所有延迟都消失了。请在物理 NIC 上进行此更改,而不是虚拟 NIC。
答案2
据我所知,Hyper-V 上没有物理 NIC 直通之类的东西。您已创建一个名为“物理 NIC”的 vSwitch,它映射到物理适配器并启用管理操作系统使用。在每个虚拟机上,都有一个使用此交换机的 vNic。您为什么要从一个 vswitch 切换到另一个?除了“新”的 vswitch 没有连接到任何东西之外,我真的不明白这有什么意义。
Hyper-V 足够智能,只有当流量从主机路由出去时,才会将流量从 vswitch 发送到物理 nic,这意味着您已经在做您想要实现的事情。