您好,登錄后才能下訂單哦!
這篇文章主要介紹“SQL數據庫連接超時時間已到的問題怎么解決”,在日常操作中,相信很多人在SQL數據庫連接超時時間已到的問題怎么解決問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”SQL數據庫連接超時時間已到的問題怎么解決”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
1:System.InvalidOperationException: 超時時間已到。超時時間已到,但是尚未從池中獲取連接。出現這種情況可能是因為所有池連接均在使用,并且達到了最大池大小。
2:在向服務器發送請求時發生傳輸級錯誤。 (provider: TCP Provider, error: 0 - 由于系統緩沖區空間不足或隊列已滿,不能執行套接字上的操作。)
3:已成功與服務器建立連接,但是在登錄前的握手期間發生錯誤。 (provider: SSL Provider, error: 0 - 等待的操作過時。) ---> System.ComponentModel.Win32Exception (0x80004005): 等待的操作過時。
4:在從服務器接收結果時發生傳輸級錯誤。 (provider: TCP Provider, error: 0 - 指定的網絡名不再可用。) ---> System.ComponentModel.Win32Exception (0x80004005): 指定的網絡名不再可用。
5:連接超時時間已到。在登錄后階段超過了此超時時間。連接可能在等待服務器完成登錄過程并響應時超時;或者在嘗試創建多個活動連接時超時。 嘗試連接到此服務器時花費的持續時間是 - [Pre-Login] initialization=2;handshake=5;[Login] initialization=0;authentication=0;[Post-Login] complete=14025; ---> System.ComponentModel.Win32Exception (0x80004005): 等待的操作過時。
設置最大超時時間
server=192.168.0.1;User ID=sa;Password=123;database=;Min Pool Size=0;Max Pool Size=30000;Pooling=true;
一般這種出現于高并發請求的情況,以下代碼可以查看SQL的連接數,這個可以作為監測的一種手段。
SELECT [program_name] ,[spid],* FROM [sys].[sysprocesses] WHERE [spid]>50 and [program_name]='.Net SqlClient Data Provider' and dbid= db_id('')
訪問數據庫超時間太長,訪問數據量大或者掃描的數據量太大,導致數據庫長時間無響應。鏈接被占用無法釋放,會導致線程池被占滿。
因此,為了能夠及時釋放占用鏈接,其他業務對數據庫訪問不受影響,所以要合理設置數據庫訪問超時時間。
2.1connectionTimeout配置大小
Jdbc的connectTimeout配置是指等待與數據庫建立socket鏈接的超時時間。如果未設置,默認為0,代表永不超時。
代碼中checkoutTimeout的配置設置為1000s,表示連接池中連接獲取鏈接超時時間,設置過大會導致接口響應變慢。
參考收單側的經驗值,connectTimeout設置為1000ms。
2.2socketTimeout配置大小
socketTimeout的配置是指客戶端與數據庫建立socket后,讀寫socket時的等待的超時時間。如果未設置,默認為0,代表永不超時。zebra默認的socketTimeout設置為60s。
根據對服務數據庫訪問統計發現最長為1-2s,socketTimeout可設置為3s
3.1數據庫SDK配置修改
連接池連接超時等設定需要設置到extraJdbcUrlParams參數中如下:
<property name="extraJdbcUrlParams" value="connectTimeout=1000&socketTimeout=3000&useSSL=false"/>
jdbcdriver 5.1.36及以上版本需要在jdbcurl設置 "useSSL=false" 參數, 可以通過此方式設置
3.2 默認SDK配置修改
修改jdbcRef配置
3.3最終方案
優點 | 不足 | 結果 | |
---|---|---|---|
Db-client-SDK | 服務代碼中,可自由配置 比配置jdbcRef優先級高,dba也推薦 | 需要發布服務 | |
RDS-Zebra | 不需要發布服務 | rd沒有權限,需要dba給配置 |
到此,關于“SQL數據庫連接超時時間已到的問題怎么解決”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。