.net core 在 linux 系统下执行 sql server 查询,高并发负载时,可能会出现请求超时的异常(Execution Timeout Expired.)
异常信息:Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
经测试,在单个用户操作使用时很正常,但在高并发测试下,无论是 Microsoft.Data.SqlClient 还是 System.Data.SqlClient 都会出现此问题。
似乎此问题还可能导致事务执行错误,但也不会返回给程序结果,导致相关表在一段时间内锁死,无法操作。
目前根据网上搜索反馈,可能是连接字符串中的 MARS(MultipleActiveResultSets)特性引起的问题,将其改为 false 即可。
目前仅在 Linux 系统下遇到此问题,Windows 系统下测试正常,据查可能跟系统网络模型不同引发,但好像也有说 Windows 下也有相关问题,该问题目前在 github 上已被提出,但未解决(2020-10-12),持续关注。
在 Dapper 中提出的问题,已被移至 SqlClient 中:https://github.com/StackExchange/Dapper/issues/1435
在 SqlClient 中直接相关的问题:https://github.com/dotnet/SqlClient/issues/647
在上面问题讨论中,提到与 MARS 相关问题:https://github.com/dotnet/SqlClient/issues/422
期待相关问题的解决。
输了你,赢了世界又如何...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!