溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

SQL數(shù)據(jù)庫連接超時時間已到的問題怎么解決

發(fā)布時間:2023-05-08 14:54:28 來源:億速云 閱讀:380 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“SQL數(shù)據(jù)庫連接超時時間已到的問題怎么解決”,在日常操作中,相信很多人在SQL數(shù)據(jù)庫連接超時時間已到的問題怎么解決問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”SQL數(shù)據(jù)庫連接超時時間已到的問題怎么解決”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

    SQL數(shù)據(jù)庫連接超時時間已到

    問題

    1:System.InvalidOperationException: 超時時間已到。超時時間已到,但是尚未從池中獲取連接。出現(xiàn)這種情況可能是因為所有池連接均在使用,并且達(dá)到了最大池大小。

    2:在向服務(wù)器發(fā)送請求時發(fā)生傳輸級錯誤。 (provider: TCP Provider, error: 0 - 由于系統(tǒng)緩沖區(qū)空間不足或隊列已滿,不能執(zhí)行套接字上的操作。)

    3:已成功與服務(wù)器建立連接,但是在登錄前的握手期間發(fā)生錯誤。 (provider: SSL Provider, error: 0 - 等待的操作過時。) ---> System.ComponentModel.Win32Exception (0x80004005): 等待的操作過時。

    4:在從服務(wù)器接收結(jié)果時發(fā)生傳輸級錯誤。 (provider: TCP Provider, error: 0 - 指定的網(wǎng)絡(luò)名不再可用。) ---> System.ComponentModel.Win32Exception (0x80004005): 指定的網(wǎng)絡(luò)名不再可用。

    5:連接超時時間已到。在登錄后階段超過了此超時時間。連接可能在等待服務(wù)器完成登錄過程并響應(yīng)時超時;或者在嘗試創(chuàng)建多個活動連接時超時。 嘗試連接到此服務(wù)器時花費的持續(xù)時間是 - [Pre-Login] initialization=2;handshake=5;[Login] initialization=0;authentication=0;[Post-Login] complete=14025; ---> System.ComponentModel.Win32Exception (0x80004005): 等待的操作過時。

    解決方法

    設(shè)置最大超時時間

    server=192.168.0.1;User ID=sa;Password=123;database=;Min Pool Size=0;Max Pool Size=30000;Pooling=true;

    一般這種出現(xiàn)于高并發(fā)請求的情況,以下代碼可以查看SQL的連接數(shù),這個可以作為監(jiān)測的一種手段。

    SELECT [program_name] ,[spid],* FROM [sys].[sysprocesses] WHERE [spid]>50  and [program_name]='.Net SqlClient Data Provider' and dbid= db_id('')

    數(shù)據(jù)庫訪問超時時間配置總結(jié)

    1.背景

    訪問數(shù)據(jù)庫超時間太長,訪問數(shù)據(jù)量大或者掃描的數(shù)據(jù)量太大,導(dǎo)致數(shù)據(jù)庫長時間無響應(yīng)。鏈接被占用無法釋放,會導(dǎo)致線程池被占滿。

    因此,為了能夠及時釋放占用鏈接,其他業(yè)務(wù)對數(shù)據(jù)庫訪問不受影響,所以要合理設(shè)置數(shù)據(jù)庫訪問超時時間。

    2.配置說明

    2.1connectionTimeout配置大小

    Jdbc的connectTimeout配置是指等待與數(shù)據(jù)庫建立socket鏈接的超時時間。如果未設(shè)置,默認(rèn)為0,代表永不超時。

    代碼中checkoutTimeout的配置設(shè)置為1000s,表示連接池中連接獲取鏈接超時時間,設(shè)置過大會導(dǎo)致接口響應(yīng)變慢。

    參考收單側(cè)的經(jīng)驗值,connectTimeout設(shè)置為1000ms。

    2.2socketTimeout配置大小

    socketTimeout的配置是指客戶端與數(shù)據(jù)庫建立socket后,讀寫socket時的等待的超時時間。如果未設(shè)置,默認(rèn)為0,代表永不超時。zebra默認(rèn)的socketTimeout設(shè)置為60s。

    根據(jù)對服務(wù)數(shù)據(jù)庫訪問統(tǒng)計發(fā)現(xiàn)最長為1-2s,socketTimeout可設(shè)置為3s

    SQL數(shù)據(jù)庫連接超時時間已到的問題怎么解決

    SQL數(shù)據(jù)庫連接超時時間已到的問題怎么解決

    3.方案

    3.1數(shù)據(jù)庫SDK配置修改

    連接池連接超時等設(shè)定需要設(shè)置到extraJdbcUrlParams參數(shù)中如下:

    <property name="extraJdbcUrlParams" value="connectTimeout=1000&amp;socketTimeout=3000&amp;useSSL=false"/>

    jdbcdriver 5.1.36及以上版本需要在jdbcurl設(shè)置 "useSSL=false" 參數(shù), 可以通過此方式設(shè)置

    3.2 默認(rèn)SDK配置修改

    修改jdbcRef配置

    SQL數(shù)據(jù)庫連接超時時間已到的問題怎么解決

    3.3最終方案


    優(yōu)點

    不足

    結(jié)果

    Db-client-SDK

    服務(wù)代碼中,可自由配置

    比配置jdbcRef優(yōu)先級高,dba也推薦

    需要發(fā)布服務(wù)


    RDS-Zebra

    不需要發(fā)布服務(wù)

    rd沒有權(quán)限,需要dba給配置


    到此,關(guān)于“SQL數(shù)據(jù)庫連接超時時間已到的問題怎么解決”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

    sql
    AI