已超過連接逾時的設定。在取得集區連接之前超過逾時等待的時間,可能的原因為所有的共用連接已在使用中,並已達共用集區大小的最大值

通常錯誤訊息是:

System.InvalidOperationException: 已超過連接逾時的設定。在取得集區連接之前超過逾時等待的時間,可能的原因為所有的共用連接已在使用中,並已達共用集區大小的最大值

=> 檢查程式後發現因在for loop內會多次呼叫api, 而api內忘了關資料庫連線>< 

     除了關連線,也因撈的資料為固定值,  再多加上cache機制。另外, 參考運作穩定的系統, 跟著設定Max Pool Size=400


有幾個檢查/處理方法:

參考1(ref. https://felixx.pixnet.net/blog/post/36966389):

檢查程式有無開啟(open)而無關閉(close)連線的狀況。

檢查程式有無遞迴呼叫,導致連線用完的狀況。

檢查系統使用量是否真的很多,導致連線用完的狀況。

修改連線字串,增加Max Pool Size的上限,例如:Max Pool Size=300


參考2(https://changyuhao625.github.io/tech/2017/04/20/connection-pooling/):

1. 檢查「是否沒有使用Using好寫法或是連線沒有被正常關閉」,如果有養成好習慣,就可以跳過這個步驟,

2. 確認Pool Size 是否符合使用,預設的大小為100,若不符合使用可以調高一些。

3. 檢查Connection Lifetime 是否有被設定,預設是0,如果有被調整,就要看看是不是設太長了導致來不及釋放掉。


留言

熱門文章