记一次 .NET某固高运动卡测试 卡慢分析
💡
原文中文,约6700字,阅读约需16分钟。
📝
内容提要
一位朋友的程序偶尔会卡顿10秒,分析发现是赛门铁克防火墙拦截文件指针设置,导致线程等待事件唤醒。这提醒我们,杀毒软件可能导致程序不稳定。
🎯
关键要点
- 朋友的程序偶尔会卡顿10秒,原因不明。
- 使用PerfView工具分析程序运行状态,发现卡顿发生在kernelbase!WaitForSingleObject上。
- 通过分析dump文件,发现程序在等待名为\BaseNamedObjects\MultiProcess的AutoResetEvent事件。
- 主线程在sysfer.dll中被赛门铁克防火墙拦截,导致线程无法及时唤醒。
- 总结认为杀毒软件可能导致程序不稳定,影响程序的正常运行。
❓
延伸问答
朋友的程序卡顿的原因是什么?
程序卡顿是由于赛门铁克防火墙拦截了文件指针设置,导致线程等待事件唤醒。
如何分析程序的卡顿问题?
可以使用PerfView工具分析程序运行状态,开启墙钟模式采集线程栈数据。
PerfView工具在分析中有什么作用?
PerfView工具可以定期采集线程栈数据,帮助识别程序卡顿的具体位置。
赛门铁克防火墙如何影响程序运行?
赛门铁克防火墙可能导致程序不稳定,影响线程的及时唤醒,从而引发卡顿。
在分析dump文件时应该注意什么?
需要结合调用栈和事件状态,寻找程序卡顿的突破口。
卡顿现象的最终结论是什么?
卡顿现象是由于赛门铁克的拦截导致的,杀毒软件可能是程序不稳定的重要因素。
➡️