.net-core - 在 EntityFramework Core 中配置 SQL 连接池
问题描述
TLDR: 有没有办法控制 AspNet Core / EF CORE Sql 连接中的连接池。我需要类似的东西:
pool: {
min: 0,
max: 1,
idle: 10000
}
问题:
我有一个用 AspNetCore 3.1 构建的无服务器 api,使用 EF 核心进行数据访问。当服务器负载不重时,一切正常。但是,当我们收到中等数量的请求时,我们会用完与 SQL 服务器的连接。因为他们没有被释放。数据库没有压力。CPU / RAM / IO 都还在“休眠”并且跟上请求没有问题。
在花了一些时间阅读问题后,我找到了 2 个解决方案
- A) 升级数据库以允许更多连接
- B) 减少连接和最小/最大连接的空闲时间
我不太喜欢选项 A,因为我们已经有一个很大的实例,现在已经很大了。真的不需要浪费更多的 CPU/RAM
所以我唯一真正的选择是尝试访问连接池。
我的 Google mojo 并没有真正让我走多远,而且我在公共规范中找不到任何东西。我发现的只是很久以前博客帖子中的老式 ADO.NET。还有一些博客文章只是说明 EF Core 中的连接池很神奇,不用担心。直到现在,在无服务器环境中,我从未担心过它。
如果我们不得不离开 EF Core 真的会很讨厌,因为这将是对应用程序的重大重写。