簡體   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