Web*_*Guy 2 performance sql-server windows-server performance-testing
我们确实有几台服务器,一台专用于没有 SQL 的网站,另一台服务器专用于 SQL。
现在运行 SQL 的服务器非常强大,但有时服务器 CPU 只是达到 100%。
这是几个屏幕截图,显示了正在发生的事情。
CPU 已满:
CPU运行正常:
如您所见,服务器非常强大。
补充说明。
有没有人能够对可能发生的事情有所了解,或者指导我完成一些检查。
干杯
更新:以下两个屏幕截图是@S4V1N 建议我运行的两个查询的结果。
有没有人能够对可能发生的事情有所了解,或者指导我完成一些检查。
让我们从显而易见的事情开始。您的服务器,用于生产 SQL 盒,不是那么强大。例如,这就是我从事的开发工作,而我大部分时间只是一个闲逛的顾问。
话虽如此,更多的硬件可能无法解决您所有的问题。我不熟悉您提到的平台,但通常当您从基础产品开始,并且开始将其称为“高度定制”时,这意味着用于基础产品的代码和索引可能不熟悉不再那么好用了。
你可以从什么开始?
我工作的公司编写了免费脚本,可以帮助您找到这些事情的根源。是否可以通过硬件或供应商支持修复是另一回事。
许多供应商不喜欢您更改他们的产品。但是,嘿,至少你可以开始关于做出改变的对话。
EXEC sp_Blitz @CheckUserDatabaseObjects = 1, @CheckServerInfo = 1;
这将使您大致了解服务器的健康状况。请注意此处的几个设置:并行性的 MAXDOP 和成本阈值,并在此处查看我的答案,了解为什么它们可以对您的情况产生影响。
EXEC sp_BlitzFirst @SinceStartup = 1;
这将告诉您服务器自启动以来一直在做什么。查看等待统计信息窗格,看看您的瓶颈在哪里。
EXEC sp_BlitzCache @SortOrder = 'cpu';
由于您担心计划缓存,因此请先按 CPU 进行查看。您可能会发现其他排序顺序很有帮助,但从这里开始。
我们会警告您查询计划中的各种内容,并为您提供尽可能多的历史信息。
EXEC sp_BlitzIndex @DatabaseName = N'YourDatabaseName', @Mode = 4
您在这里要查看的主要内容是高价值缺失索引,它应该位于顶部。
EXEC sp_BlitzWho
这会让您知道当 CPU 高时正在运行哪些查询。它们可能与计划缓存中的内容不同。
希望这可以帮助!