聊一聊坑人的 C# MySql.Data SDK

💡 原文中文,约7700字,阅读约需19分钟。
📝

内容提要

近期MySql.Data驱动导致程序卡死,因其同步方法实为异步包装,造成线程饥饿。建议使用纯异步写法或退回低版本以避免此问题。MySql.Data项目未开issue栏,影响社区反馈。

🎯

关键要点

  • MySql.Data驱动导致程序卡死,因其同步方法实为异步包装,造成线程饥饿。
  • 早期版本的MySql.Data使用同步方式访问数据库,后续版本保留了同步方法。
  • MySql.Data的同步方法实际上是异步方法的包装,容易导致线程饥饿。
  • 通过windbg分析发现线程池中线程都处于运行状态,且任务积压严重。
  • 故障现象显示线程卡在UpdateAnswerUrl和Open方法中,均为异步转同步实现。
  • 解决方法包括使用纯异步写法或退回低版本以避免问题。
  • MySql.Data项目在GitHub上未开issue栏,影响社区反馈。
➡️

继续阅读