1. 程式人生 > >Firebird Connection pool is full

Firebird Connection pool is full

字符串 exe for utf con 本地 tex div builder

今天在做Firebird V3.0.3 x64 版本內存測試,本地PC上,準備開啟800個事務(保持不關閉),每個事務做些事,盡量不釋放內存。

每次測試當事務數達到100時,就提示Connection pool is full,此時內存才吃到500+MB。

在系統配置裏沒有一個選項是最大連接數,最後發現是在連接字符串裏,有個選項是 MaxPoolSize

MaxPoolSize = 1000 ,程序敞開跑,最後後臺進程用到 5GB多,PC內存不夠了。

以下是連接字符串:

 1 FbConnectionStringBuilder connBuilder = new FbConnectionStringBuilder();
2 connBuilder.DataSource = "localhost"; 3 connBuilder.UserID = "sysdba"; 4 connBuilder.Password = "123456"; 5 connBuilder.Database = "x"; 6 connBuilder.Charset = "utf8"; 7 connBuilder.ServerType = FbServerType.Default; 8 connBuilder.Dialect = 3; 9 connBuilder.MaxPoolSize = 1000; 10 connBuilder.Pooling = true
; 11 _connStr = connBuilder.ConnectionString;

測試程序:

 1     for (int i = 0; i < 800; i++)
 2     {
 3         var db = DbCtxt.NewDbContext().UseTransaction(true);
 4         for (int j = 0; j < 500; j++)
 5         {
 6             db.Insert("m_user").Column("code", "1234567890")
 7                 .Column("
label", "ABCDEFGHIJ") 8 .Column("pwd", "1234").Column("is_del", false).Execute(); 9 } 10 }

內存占用:

技術分享圖片

Firebird Connection pool is full