记一次 .NET 某传感器采集系统 线程爆高分析

💡 原文中文,约6600字,阅读约需16分钟。
📝

内容提要

这篇文章讲述了作者朋友使用hsl库进行plc采集时遇到的内存溢出和锁污染问题。作者建议升级hsl库,但问题仍未解决。进一步分析发现是由于网络问题导致IP不可访问,引发程序崩溃。文章还讨论了hsl库的异常处理方式和线程产生的原因。作者认为朋友和hsl库都有责任。

🎯

关键要点

  • 朋友使用hsl库进行PLC采集时遇到内存溢出问题。
  • 程序中存在大量线程,导致内存使用异常。
  • 分析发现线程卡在Interactivelock.Enter锁上,可能是锁污染问题。
  • 建议朋友升级hsl库,但升级后问题依旧存在。
  • 进一步分析发现是由于网络问题导致IP不可访问,程序崩溃。
  • hsl库的异常处理方式不够严谨,未强制抛出异常。
  • 大量线程的产生是由于上层未判断异常码,导致继续调度。
  • 事故的根本原因是设备采集过程中IP问题引发的系统性崩溃。
➡️

继续阅读