Sin*_*ngh 4 performance sql-server sql-server-2014 cpu performance-tuning
CPU 利用率会定期达到 100%,当我检查 SP_who2 时,它显示大约 20000 个会话,其中大多数都在睡眠(也在使用 CPU)。
我认为 CPU 负载与睡眠会话有关
应用程序名称显示为 Microsoft JDBC。
大多数会话都将“SOS_SCHEDULER_YIELD”显示为 last_wait_type。重新启动 Windows Server 后,CPU 利用率已下降,但会话计数正在增加。
服务器有 32 个内核。
应用程序团队告诉他们正在使用一些“连接池”进行连接管理。
如何调查或解决睡眠会话的数量?
应用程序可能正在泄漏连接。我不知道他们是什么意思
应用程序团队告诉他们正在使用一些“连接池”进行连接管理。
但听起来他们正试图实现自己的连接池系统。
通常,连接泄漏发生在您有调用而 .open()没有调用 .close()同一个连接时。
由于这通常是客户端问题,我认为您可以从数据库端做的唯一一件事(不能每隔一段时间杀死它们,但我不建议这样做)是使用来自的信息sys.dm_exec_sessions来查找泄漏连接的应用程序然后与您的开发人员或供应商交谈,以便他们可以查找有问题的代码。
例如这个查询(取自这里:
select count(*) as sessions,
s.host_name,
s.host_process_id,
s.program_name,
db_name(s.database_id) as database_name
from sys.dm_exec_sessions s
where is_user_process = 1
group by host_name, host_process_id, program_name, database_id
order by count(*) desc;
Run Code Online (Sandbox Code Playgroud)
将显示每个进程每个主机的连接数。这应该足以识别有问题的应用程序。
您还可以创建一个作业,记录此信息随着时间的推移,以确定连接是否真的一直在增加,这样您就可以向您的应用程序团队“证明”确实存在泄漏。
| 归档时间: |
|
| 查看次数: |
11396 次 |
| 最近记录: |