什么可能导致同一物理服务器上的两个虚拟机之间出现延迟?
Posted
技术标签:
【中文标题】什么可能导致同一物理服务器上的两个虚拟机之间出现延迟?【英文标题】:What could cause latency between two VMs on the same physical server? 【发布时间】:2013-10-26 23:54:42 【问题描述】:我在同一台物理服务器 (Windows Server 2012 Hyper-V) 上有一个 Web VM 和一个数据库 VM。该网站是 Windows 2012 服务器上的经典 ASP 站点,数据库在 SQL Server 2012 上,也在 Windows Server 2012 上。
我的 colo 有一个 DNS 服务器(不用于这些虚拟机),当它出现故障时,站点会遇到脚本超时错误——处理页面需要 180 多秒。在检查站点配置文件时,许多数据库调用每次都需要几秒钟。
但是,SQL 配置文件显示没有性能问题 - 所有查询只需几毫秒即可处理。放置 1,000+ 毫秒的过滤器显示没有匹配的结果。所以这让我相信延迟是在网络和数据库虚拟机之间。
但是,由于以下几个原因,这是没有意义的:
DNS 服务器不托管与此站点或数据库相关的条目。 所有连接都使用 IP,而不是域名/机器名。 两个虚拟机之间存在延迟,但它们位于同一台服务器上,因此网络问题不应影响虚拟机之间的通信。我通过运行 Wireshark 验证了这一点,没有网络到数据库的流量到达 NIC。这可能是什么原因造成的?
编辑: 忘记了 DNS 服务器确实具有 IP 和站点域的反向 DNS。但仍然无法想象这将如何导致 Web 和 DB VM 之间的延迟。
针对 cmets 的其他详细信息:
根据this article,MDAC 版本是 6.2.9200.16384。我不记得单独安装 MDAC,所以我假设它是随 Windows Server 2012 一起安装的。
它们在同一个子网上。 tracert
显示从 Web 服务器到 DB 服务器的直接路由。
这是连接字符串:
Provider=SQLNCLI11;Server=[DbServerIp];Integrated Security=SSPI;Network=DBMSSOCN
这不是运行 VMWare,而是 Windows Hyper-V。以为我之前提到过,但现在我发现我没有(现在已经在上面添加了)。
【问题讨论】:
经典 ASP? MDAC 2.6? support.microsoft.com/kb/300420 "延迟在两个虚拟机之间" - 它们在同一个子网上吗?在两者之间运行一个tracert,它们是一跳吗? 我们能看到 Conn 字符串吗? 我已经更新了 OP 以及这些 cmets 的答案。 尽量不要使用集成安全性。示例:Provider=SQLOLEDB;Server=YOUR_SQL_IP_ADDR;User ID=YOUR_SQL_LOGIN;Password=YOUR_SQL_PW;Initial Catalog=YOUR_DB_NAME 【参考方案1】:我认为以下链接可能会解决您的问题:
Read thread to the bottom to disable the NETBios Helper
实际上,尽管听起来很奇怪,但请尝试在您的网络适配器上禁用 NETBIOS:
【讨论】:
以上是关于什么可能导致同一物理服务器上的两个虚拟机之间出现延迟?的主要内容,如果未能解决你的问题,请参考以下文章