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