Closed LeaFrock closed 11 months ago
因为io出现的问题,异步长时间不能完成 大慨是异步任务堆积太多造成的内存溢出
异步长时间不能完成
是要在连接字符串那里添加连接超时配置?还是说FreeSql可以在底层增加异步超时处理的策略?
整个异步链条可能都会有问题,不止是 FreeSql。
异步链条卡死,线程池被耗尽。
异步链条卡死,线程池被耗尽
这个不太可能,或者说很奇怪。因为堆栈上层的接口业务逻辑都使用的异步API,不存在sync in async
的问题,理论上不该出现线程饥饿的情况。
假设真出现了线程池被耗尽的情况,那向Redis、RPC等其他服务的异步请求,都有几率报类似错误才对。但看下来只有FreeSql这里的堆栈异常。
sync in async 理论上不存在,但会有大量的 HttpRequest 入口进来占用线程池
前面的任务处理不完,后面一直有新的请求打入。
您对我这边能做什么有建议吗?
问题描述及重现代码:
昨天可能是受某云厂商服务影响,导致某个服务(部署在云服务器A)连接数据库(部署在云服务器B)时候出现连接中断。
查看错误日志,出现
Status unavailable
没问题,但出现OutOfMemoryException
就很奇怪。查了一下相关问题不少,但都没有像我这样遇到内存溢出异常的,所以提个issue看看作者有没有头绪。错误日志如下:
再往下就是业务代码的堆栈了,略过。该类型错误日志集中在1s内,大约100条(请求)。
还有个别错误日志如下:
数据库版本
SqlServer 2016
安装的Nuget包
FreeSql.Provider.SqlServer 3.2.802
.net framework/. net core? 及具体版本
.NET 7.0.13