是否可以限制.NET中数据库连接的总数?

时间:2019-07-19 19:16:18

标签: c# .net postgresql ado.net npgsql

我有一个与Azure托管的PostgreSQL数据库实例进行交互的API服务器。一台postgres服务器上有大量(> 50个)postgres数据库。任何给定的API请求都可能必须与任何给定的数据库进行交互。

不幸的是,我们的Postgres Azure计划仅允许50个连接。我经常收到失败的请求,因为Postgres不会接受更多请求。我的ADO.NET连接池仍保持最近使用的数据库的数据库连接,而与其他数据库的连接出错。

我尝试在连接字符串上设置Max Pool Size,但似乎连接池限制是按每个数据库而不是每个服务器应用的。我仍然需要尽可能多的缓冲,打开新连接可能需要> 1500ms,如果每次请求都发生这种情况,这超出了我的SLA。

是否有一种方法可以要求.NET从每个服务器或总共打开50个以上的数据库连接?

1 个答案:

答案 0 :(得分:0)

设置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();  
  }