C#Dapper和MySQL随机错误,即致命错误/从流中读取失败,等等

问题描述 投票:0回答:1

我在MySQL和Dapper中使用.net核心工作程序(3.1)。

这不是新问题,我已经经历了一年多的时间,从来没有引起大问题,因为总是会重试任务。

但是现在我正在开发一项新功能,必须在几秒钟内处理> 300-600k行,将数百次连接到数据库。

问题是,在日志中我可以随机看到MySQL.Data.MySqlClient.MySqlExceptions(通过Dapper获取记录或执行SQL命令。

它们都是通用的,没有任何超出流的故障并且操作被取消。

最奇怪的问题是,它仅在Linux环境中发生(客户端在MySQL实例中是本地的)。当我在Windows上(通过VS或Docker映像)运行它时,它可以正常运行,且测试负载大于30倍。

当我部署到Linux(使用来自Microsoft的3.1 aspnet映像的相同docker映像时,它失败。

我已经对其进行了一些测试,可以直接发布到ubuntu和dotnet运行dll并可以正常运行,但是我只尝试了10次。

所以不是一个大测试。

任何想法我应该去哪里看?我试图确保Dapper查询exec将使用打开的连接,但事实并非如此。也有重试,但有时在初次尝试时效果很好,有时会重试2次,有时会连续5次失败20次。

无法查明此问题,不确定这是Dapper还是Microsoft映像在Linux上运行不可靠。...

c# mysql .net docker dapper
1个回答
0
投票

Reading from the stream has failed是一个错误,经常针对Oracle的MySQL Connector / NET报告:bug 75917bug 76597。有人在这些错误报告中报告了各种解决方法。

[我建议切换到MySqlConnector,这是MySQL的OSS替代ADO.NET库,它支持.NET Core,真正的异步I / O和fixes many Connector/NET bugs

© www.soinside.com 2019 - 2024. All rights reserved.