Jam*_*ean 5 sql-server sql-server-2012 cpu
我们有一个带有 16 个 CPU 内核的 SQL Server 2012 实例。当查看 sys.dm_os_schedulers 时,我们看到预期的 16 行是“VISIBLE ONLINE”,每个核心一个。错误日志在启动时显示以下标准条目:
SQL Server 检测到 2 个插槽,每个插槽 8 个内核,每个插槽 8 个逻辑处理器,总共 16 个逻辑处理器;使用基于 SQL Server 许可的 16 个逻辑处理器。这是一条情报信息; 无需用户操作。
然而 sys.dm_os_schedulers 也包含大约。1200 行是“HIDDEN ONLINE”。
服务器未使用可用性组或镜像,并且未启用资源调控器。
问题是每个隐藏的调度器似乎都被分配了一个工作线程,所以我们的监控软件不断提醒服务器线程用完,即使查询运行得非常愉快并且似乎对性能没有任何实际影响.
我知道隐藏的调度程序只对内部系统进程可用,但你知道是什么导致显示这么多吗?
将我的评论转换为答案:
有些线程可能在未记录的情况下运行fn_dump_dblog
,它正在创建一个新的隐藏 SQLOS 调度程序和最多三个线程,这些线程在服务器重新启动之前不会消失(也不会被重用)。不过它在 2012 + SP2 中得到了修复。
此外,您可以使用此查询来查找调度程序的创建时间:
SELECT s.scheduler_id, s.status, th.started_by_sqlservr, th.creation_time
FROM sys.dm_os_workers w
JOIN sys.dm_os_schedulers s
ON w.scheduler_address = s.scheduler_address
JOIN sys.dm_os_tasks t
ON t.task_address = w.task_address
JOIN sys.dm_os_threads th
ON th.thread_address = w.thread_address
where s.status = 'HIDDEN ONLINE' -- just get the hidden online schedulers for your specific case
ORDER BY s.scheduler_id
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
688 次 |
最近记录: |