繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM