我们在使用虚拟服务器上托管的 SQL Server 时遇到了一些问题。我们偶尔会有很短的时间,即使执行一个简单的选择也需要几分钟。在此期间,服务器上的 CPU 和内存使用率似乎正常。我们已经使用性能监视器对服务器进行了一些基本的监控,但这并没有发现任何东西,而且我们没有想法。诊断问题的下一步是什么?
编辑:
我们在服务器上看到的问题的唯一迹象是事件日志消息,通知我们“SQL Server 遇到了 x 次 I/O 请求的发生时间超过 15 秒才能完成”
我们在使用虚拟服务器上托管的 SQL Server 时遇到了一些问题。我们偶尔会有很短的时间,即使执行一个简单的选择也需要几分钟。在此期间,服务器上的 CPU 和内存使用率似乎正常。我们已经使用性能监视器对服务器进行了一些基本的监控,但这并没有发现任何东西,而且我们没有想法。诊断问题的下一步是什么?
编辑:
我们在服务器上看到的问题的唯一迹象是事件日志消息,通知我们“SQL Server 遇到了 x 次 I/O 请求的发生时间超过 15 秒才能完成”
对我来说听起来像是一个典型的 I/O 问题(嗯,哦,那是你已经发布的):)
我通常不做 Windows,但基本问题是一样的:
那么减速必须是CPU或磁盘瓶颈,或者某种超时,例如等待不可用的网络资源。你提到 CPU 很好,你检查过 PerfMon 平均磁盘队列长度和磁盘字节/秒吗?事件日志中是否有任何相关错误?
FWIW 我有几个 SQL2005(标准和工作组)服务器在 Hyper-V 虚拟机上运行,它们工作得很好,所以没有固有的问题。
JR
最有可能的问题是此虚拟机与同一物理主机上的其他虚拟机之间的资源争用,或者主机本身存在主要活动(由于备份进程正在运行而导致大量 I/O?)。
另一种可能性是您的虚拟服务器正忙于执行磁盘 I/O 密集型操作(其他更大或更复杂的 SQL 查询同时运行?),而您的简单选择也在尝试从磁盘读取。由于 I/O 争用而阻塞的进程不会显示为 CPU 繁忙。尽管除非您的简单选择是简单但查询多行,否则即使在这种情况下,我也不希望它花费“几分钟”,因此主机资源(可能是 I/O 带宽)争用的可能性更大。
如果有任何东西使 SQL 变慢,那就是磁盘速度慢,或者没有正确对齐分区。我在带有 Equallogic SAN 磁盘的 VM 内运行 SQL 2008 实例,它的性能优于我们的任何物理 SQL 盒。
如果虚拟服务器根本没有指示任何问题,则可能是主机服务器有问题。这些问题经常出现在人们在每个虚拟服务器上放置太多虚拟 CPU 的地方,它增加了阻塞物理主机 CPU 的机会。
我想答案已经在其他响应之一中。然而,运行 EXEC sp_Who2 并确保您的“简单查询”不会被某种长时间运行的更新或类似的东西阻塞也是值得的。
我之前被 MS Access 链接表所吸引,这些表有一些可怕的锁定习惯。
告诉我们更多有关支持您的主机/sql vm(本地、iscsi(hw/sw)、nfs、san、sas、sata、供应商等)的存储的信息?从您最近的评论来看,这听起来像是更仔细检查的好方法。
让我们知道您的管理程序(以及可能的主机操作系统)是什么,以便人们可以更直接地谈论您的情况。