[20140829]spinlock导致cpu居高不下

简介: 背景:      出现cpu高于常规的告警 排查:   1.开跟踪,没有发现cup特别高的查询   2.查看内核cpu使用量,看是否是sql server 端引起   3.查看负荷,是否负荷特别高这里使用 batch request   4.全部无解,sql运行都正常,在thread,worker,task级别查看也未发现有问题   5.开procexp.exe希望可以找到足丝马迹,点击进去发现,所有高cpu使用的线程都在KeAcquireSpinLockAtDpcLevel  调用下,开始怀疑是否是spinlock问题。

背景:

     出现cpu高于常规的告警

排查:

  1.开跟踪,没有发现cup特别高的查询

  2.查看内核cpu使用量,看是否是sql server 端引起

  3.查看负荷,是否负荷特别高这里使用 batch request

  4.全部无解,sql运行都正常,在thread,worker,task级别查看也未发现有问题

  5.开procexp.exe希望可以找到足丝马迹,点击进去发现,所有高cpu使用的线程都在KeAcquireSpinLockAtDpcLevel  调用下,开始怀疑是否是spinlock问题。

  6.查询spinlock stats,sys.dm_os_spinlock_stats,查看spins,spins最大的是lock_hash,因为没有参考值,所以找了一个业务更加繁忙的服务a对比,发现比a高了一个数量级。

解决方法:

    没有,估计只能通过加nolock减少对lock数据结构的访问。

    官方出了一篇文章:Diagnosing and Resolving Spinlock Contention on SQL Server

    没细读,里面有具体的诊断方法。

 

目录
相关文章
|
Arthas 运维 监控
Java - 手撸线上故障 OOM + CPU居高不下
Java - 手撸线上故障 OOM + CPU居高不下
138 0
|
NoSQL Linux Ubuntu
linux cpu占有率居高不下 调试
今天调试程序,使用top命令后,发现程序的cpu占有率很高,一直在99,这很可怕,所以来调试。 使用top命令,得如下结果 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1997 root 20 0 358m 71m 3208 S 99.
1506 0
|
9天前
|
弹性计算 Kubernetes Perl
k8s 设置pod 的cpu 和内存
在 Kubernetes (k8s) 中,设置 Pod 的 CPU 和内存资源限制和请求是非常重要的,因为这有助于确保集群资源的合理分配和有效利用。你可以通过定义 Pod 的 `resources` 字段来设置这些限制。 以下是一个示例 YAML 文件,展示了如何为一个 Pod 设置 CPU 和内存资源请求(requests)和限制(limits): ```yaml apiVersion: v1 kind: Pod metadata: name: example-pod spec: containers: - name: example-container image:
|
18天前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
191 2
|
2月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
128 5
|
1月前
|
C# 开发工具 Windows
C# 获取Windows系统信息以及CPU、内存和磁盘使用情况
C# 获取Windows系统信息以及CPU、内存和磁盘使用情况
42 0
|
2月前
|
Prometheus Kubernetes 监控
使用kubectl快速查看各个节点的CPU和内存占用量
在Kubernetes集群中,安装metrics-server,并使用kubectl快速查看集群中各个节点的资源使用情况。
129 0
|
3月前
|
存储 监控 Docker
如何限制docker使用的cpu,内存,存储
如何限制docker使用的cpu,内存,存储
|
3月前
|
缓存 Kubernetes 数据中心
在Docker中,如何控制容器占用系统资源(CPU,内存)的份额?
在Docker中,如何控制容器占用系统资源(CPU,内存)的份额?

热门文章

最新文章