[英]Is it possible to limit the total number of database connections in .NET?
我有一个与Azure托管的PostgreSQL数据库实例进行交互的API服务器。 一台postgres服务器上有大量(> 50个)postgres数据库。 任何给定的API请求可能必须与任何给定的数据库进行交互。
不幸的是,我们的Postgres Azure计划仅允许50个连接。 我经常收到失败的请求,因为Postgres不会接受更多请求。 我的ADO.NET连接池仍保持最近使用的数据库的数据库连接,而与其他数据库的连接出错。
我尝试在连接字符串上设置“ Max Pool Size
”,但是似乎连接池限制是针对每个数据库而不是每个服务器应用的 。 我仍然需要尽可能多的缓冲池,打开新连接可能需要> 1500ms,如果每次请求都发生这种情况,这超出了我的SLA。
是否有一种方法可以要求.NET永远不要为每个服务器或总数打开50个以上的数据库连接?
设置Max Pool Size
,而不是连接到单独的数据库,而是连接到服务器上的同一数据库,然后执行\\connect
语句以更改为所需的数据库。 以下代码片段演示了如何建立与master
数据库的初始连接,然后切换到databaseName
字符串变量中指定的所需数据库。
// Assumes that command is a NpgsqlCommand object and that
// connectionString connects to master.
command.Text = "\connect DatabaseName";
using (NpgsqlConnection connection = new NpgsqlConnection(
connectionString))
{
connection.Open();
command.ExecuteNonQuery();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.