我有一台安装了 SQL Server 2014 Express SP2 的服务器 2012R2。有一些应用程序和数据库,但都不是太大。数据库很小,总共大约 100MB。
在某个时刻(不是从一开始),SQL Server 进程开始显示持续的高 CPU 使用率。通常 CPU 负载约为 15-20%。它显示了一个周期性的图片,其中一分钟的负载为 15-20%,在这段时间之间有几秒钟的使用率为 0%。有时 SLQ Server 会停止这样做(无论它做什么......)大约 2 分钟,然后重新启动,负载为 10-20 秒 >95%,之后“通常”为 15-20%......
当然,它会影响用户的性能。
我已经调查了所有我能调查的内容(会话报告、查询报告、分析器、内存分配 SP...),但我没有发现任何可能导致这种情况的原因。或者确切地说,我发现没有会话、没有查询,也没有实际安装的应用程序中可以加载如此多的 CPU。我尝试关闭所有使用 SQL Server 的应用程序并分离它们的数据库,然后重新启动服务器。没有用。
我甚至卸载/重新安装了 SQL Server,但它在启动后不久就开始消耗 CPU,尽管它是“干净的”。
此外,没有“不寻常”的配置,它只是一个干净的虚拟机,带有简单的 SQL Server 安装。我已经安装了它,创建了数据库、登录名,就这样。
为什么即使没有查询和附加数据库,SQL Server 也会使用如此多的 CPU?我如何才能至少了解发生了什么?
另外,从链接https://mssqlwiki.com/2012/10/04/troubleshooting-sql-server-high-cpu-usage/ 我检查了计时器可能存在的问题,这可能是由电源计划或其他设置引起的。启动时使用 -T8038 不会影响 CPU 负载。
答案1
问题如下。
让 Hyper-V VM 配置高启动内存(如 10240MB),并且动态内存限制处于活动状态,范围为 512-10240。
VM 启动时有全部可用 RAM。加载后不久,主机从 VM 回收多余的内存。同时,SQL Server 进程开始产生无法解释的 CPU 负载。
但是,如果启动内存设置为 512MB,就不会发生这种情况。