快捷搜索:  手机  明星

sql数据库占用cpu(SERVER数据库服务器CPU不能全部利用原因分析)

sql数据库占用cpu(SERVER数据库服务器CPU不能全部利用原因分析)--CPU总数 SELECT cpu_count FROM sys.dm_os_sys_info --在线CPU数 SELECT COUNT(*) FROM sys.dm_os_schedulers WHERE is_online = 1 AND status = 'VISIBLE ONLINE' 2.分析从SQL Server 2012开始,企业版有两种许可证模式,基于核心和基于服务器 CAL。基于服务器 CAL许可证限制SQL Server最多能使用20个物理处理器,如果超线程已启用,这将是40个逻辑处理器。没有SQL专家云,可以使用下面的语句查询。但是此时服务器的CPU利用率并不高,在30%左右。从任务管理器里查看,服务器有128核心,但是绝大多数核心根本利用不上。SQL专家云深度体检里有相应的诊断,SQL Server在线的CP

背景

客户凌晨把HIS数据库迁移到配置更高的新服务器,上午业务高峰时应用非常缓慢,严重影响到业务运行。

1.现象

通过SQL专家云实时可视化界面看到大量的绿点,绿点表示会话在等待某项资源,绿点越大说明等待的会话数越多。

sql数据库占用cpu(SERVER数据库服务器CPU不能全部利用原因分析)(1)


进入活动会话列表,发现大量会话的状态为runnable,runnable代表这个会话可以执行,但没有 CPU 可以分配给它,可以理解为正在等待 CPU 这项系统资源。

sql数据库占用cpu(SERVER数据库服务器CPU不能全部利用原因分析)(2)

但是此时服务器的CPU利用率并不高,在30%左右。

sql数据库占用cpu(SERVER数据库服务器CPU不能全部利用原因分析)(3)

从任务管理器里查看,服务器有128核心,但是绝大多数核心根本利用不上。

sql数据库占用cpu(SERVER数据库服务器CPU不能全部利用原因分析)(4)

SQL专家云深度体检里有相应的诊断,SQL Server在线的CPU核数40小于检测到的CPU核数128,说明SQL Server只使用了40个核心。

sql数据库占用cpu(SERVER数据库服务器CPU不能全部利用原因分析)(5)

没有SQL专家云,可以使用下面的语句查询。

--CPU总数 SELECT cpu_count FROM sys.dm_os_sys_info --在线CPU数 SELECT COUNT(*) FROM sys.dm_os_schedulers WHERE is_online = 1 AND status = 'VISIBLE ONLINE' 2.分析

从SQL Server 2012开始,企业版有两种许可证模式,基于核心和基于服务器 CAL。基于服务器 CAL许可证限制SQL Server最多能使用20个物理处理器,如果超线程已启用,这将是40个逻辑处理器。

确认数据库的版本为SQL server 2012 Enterprise Edition,也就是服务器 CAL许可证模式。

sql数据库占用cpu(SERVER数据库服务器CPU不能全部利用原因分析)(6)

3.解决

在SQL Server安装文件中更换序列号,升级到基于核心的许可模式。

sql数据库占用cpu(SERVER数据库服务器CPU不能全部利用原因分析)(7)

sql数据库占用cpu(SERVER数据库服务器CPU不能全部利用原因分析)(8)

sql数据库占用cpu(SERVER数据库服务器CPU不能全部利用原因分析)(9)

重启SQL Server服务后,在SQL专家云中确认已经是基于核心的许可证模式了,并且能用使用到128个核心。

sql数据库占用cpu(SERVER数据库服务器CPU不能全部利用原因分析)(10)

4.其它情况

如下图,在为虚拟机分配CPU时,配置了16个插槽,每个插槽内核数为1,这样SQL Server标准版只能使用到4个CPU。应该合理的配置,例如2和8或者4和4。

sql数据库占用cpu(SERVER数据库服务器CPU不能全部利用原因分析)(11)

sql数据库占用cpu(SERVER数据库服务器CPU不能全部利用原因分析)(12)

猜您喜欢: