聊一聊坑人的 C# MySql.Data SDK - 一线码农
💡
原文中文,约7500字,阅读约需18分钟。
📝
内容提要
MySql.Data驱动导致线程饥饿问题,因为其同步方法实际上是异步包装,导致线程池耗尽。建议使用纯异步写法或回退至低版本以避免此问题。
🎯
关键要点
- MySql.Data驱动导致线程饥饿问题,程序卡死无响应。
- 线程饥饿的原因是MySql.Data的同步方法实际上是异步包装。
- 升级MySql.Data版本后,保留了同步方法,导致线程池耗尽。
- 使用windbg分析dump,发现线程池中线程全部处于运行状态,且无可用线程。
- 故障现象显示线程卡在ExecuteScalarAsync方法的结果获取上。
- 解决方法包括使用纯异步写法或退回到低版本的MySql.Data。
- MySql.Data项目在GitHub上未开issue栏,无法让社区开发者介入。
➡️