Beg*_*DBA 2 sql-server sql-server-2012 sql-server-2014 cpu
我只是在浏览系统运行状况扩展事件时遇到一个事件,其中包含用于显示工作线程状态的查询处理的诊断结果:
512 + ((logical CPU's - 4) * 16)看起来不正确。但是,这里的最新链接对于大于 64 的逻辑处理器是有意义的,其中 16 的计算更改为 32。但是该链接说从 SQL 2017 开始,但是我得到的数字 2994 是针对 SQL2012, 14 16 的,其中逻辑处理器数为 80 . 我在这里遗漏了什么吗?sp_configure 中的 max worker 设置设置为“0”
maxWorkers="2944" workersCreated="456" workersIdle="314" tasksCompletedWithinInterval="1021881" pendingTasks="1"
我应该检查其他东西还是可以忽略它?
- 为什么当我有 80 个逻辑处理器时最大工作线程显示 2994 [...]
将该项目从 MSDN 复制到 Docs 时,似乎存在文档错误。您在 Dorr 的帖子中看到的内容是正确的,并且适用于 2012 SP4 + 最新的 CU。我将进行所需的文档更改。文档已更新。
- 回到那个系统健康事件状态显示警告以下没有 […]
您收到警告的原因是因为您有pendingTasks="1". 这可能表明调度程序存在问题,应进行调查。
我看到待处理的任务数有时会变化 2、4、8 甚至更高。
在您链接的同一 Docs 文章中,有一个查询可用于跟踪任务及其状态。看看它是否只是特定调度程序上的任务,只有登录任务等会很有趣。
SELECT s.session_id, r.command, r.status,
r.wait_type, r.scheduler_id, w.worker_address,
w.is_preemptive, w.state, t.task_state,
t.session_id, t.exec_context_id, t.request_id
FROM sys.dm_exec_sessions AS s
INNER JOIN sys.dm_exec_requests AS r
ON s.session_id = r.session_id
INNER JOIN sys.dm_os_tasks AS t
ON r.task_address = t.task_address
INNER JOIN sys.dm_os_workers AS w
ON t.worker_address = w.worker_address
WHERE t.task_state = N'PENDING'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
384 次 |
| 最近记录: |