聊一聊坑人的 C# MySql.Data SDK - 一线码农

💡 原文中文,约7500字,阅读约需18分钟。
📝

内容提要

MySql.Data驱动导致线程饥饿问题,因为其同步方法实际上是异步包装,导致线程池耗尽。建议使用纯异步写法或回退至低版本以避免此问题。

🎯

关键要点

  • MySql.Data驱动导致线程饥饿问题,程序卡死无响应。
  • 线程饥饿的原因是MySql.Data的同步方法实际上是异步包装。
  • 升级MySql.Data版本后,保留了同步方法,导致线程池耗尽。
  • 使用windbg分析dump,发现线程池中线程全部处于运行状态,且无可用线程。
  • 故障现象显示线程卡在ExecuteScalarAsync方法的结果获取上。
  • 解决方法包括使用纯异步写法或退回到低版本的MySql.Data。
  • MySql.Data项目在GitHub上未开issue栏,无法让社区开发者介入。
➡️

继续阅读