记一次 .NET 某传感器采集系统 线程爆高分析
原文中文,约6600字,阅读约需16分钟。
📝
内容提要
这篇文章讲述了作者朋友使用hsl库进行plc采集时遇到的内存溢出和锁污染问题。作者建议升级hsl库,但问题仍未解决。进一步分析发现是由于网络问题导致IP不可访问,引发程序崩溃。文章还讨论了hsl库的异常处理方式和线程产生的原因。作者认为朋友和hsl库都有责任。
🎯
关键要点
-
朋友使用hsl库进行PLC采集时遇到内存溢出问题。
-
程序中存在大量线程,导致内存使用异常。
-
分析发现线程卡在Interactivelock.Enter锁上,可能是锁污染问题。
-
建议朋友升级hsl库,但升级后问题依旧存在。
-
进一步分析发现是由于网络问题导致IP不可访问,程序崩溃。
-
hsl库的异常处理方式不够严谨,未强制抛出异常。
-
大量线程的产生是由于上层未判断异常码,导致继续调度。
-
事故的根本原因是设备采集过程中IP问题引发的系统性崩溃。
🏷️