记一次 .NET 某药材管理系统 卡死分析

💡 原文中文,约7100字,阅读约需17分钟。
📝

内容提要

本文介绍了一次程序卡死的故障排查过程,通过使用Windbg工具分析程序,发现是SQL查询导致的问题。通过观察所有线程栈,发现有两个线程在请求SQLSERVER,并在等待返回结果。进一步提取其中一个线程的SqlCommand对象,发现SQL语句没有加nolock导致在SQLSERVER层面一直获取不到S锁。通过观察SQL的请求时间,发现这条SQL已经等待了1分43秒,需要在SQLSERVER端查看锁相关的DMV视图,加上nolock尝试解决问题。最终朋友在SQLSERVER层面修改了max degree of parallelism来提高并发度,问题得到缓解。

🏷️

标签

➡️

继续阅读