已超過連接逾時的設定。在取得集區連接之前超過逾時等待的時間,可能的原因為所有的共用連接已在使用中,並已達共用集區大小的最大值
通常錯誤訊息是:
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,如果有被調整,就要看看是不是設太長了導致來不及釋放掉。
留言
張貼留言