国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

druid之連接空閑超時問題FIX

這篇具有很好參考價值的文章主要介紹了druid之連接空閑超時問題FIX。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

彼時的少年站在成長的盡頭,回首過去,一路崎嶇早已繁花盛開

druid 是一個用于 Java 的高效數(shù)據(jù)庫連接池,它提供了強大的監(jiān)控和擴展功能。

空閑等待超時

Caused by:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:The last packet successfully received from the server was 65,699,330 milliseconds ago. The last packet sent successfully to the server was 65,699,330 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem. 

mysql數(shù)據(jù)庫等待超時時間(wait_timeout)是28800,也就是8小時,而druid連接池參數(shù)max-wait是30000

連接空閑超時問題的原因通常與連接池和數(shù)據(jù)庫服務器之間的配置不匹配有關(guān)。當連接池中的連接長時間處于空閑狀態(tài)時,數(shù)據(jù)庫服務器可能會關(guān)閉這些空閑連接以節(jié)省資源。這種情況下,連接池可能仍然認為這些連接是有效的,但實際上數(shù)據(jù)庫服務器已經(jīng)釋放了它們。

以下是引發(fā)連接空閑超時問題的一些可能原因:

  1. 服務器端的 wait_timeout 設置較低:數(shù)據(jù)庫服務器會在連接空閑一段時間后關(guān)閉它們。如果服務器的 wait_timeout 參數(shù)設置得較低,連接池中的空閑連接可能在被使用前就已被服務器關(guān)閉。

  2. 連接池配置不合理:如果連接池的配置參數(shù)(例如 maxIdleminEvictableIdleTimeMillis)沒有合理設置,連接池可能會保持過多的空閑連接,導致它們在被使用前被數(shù)據(jù)庫服務器關(guān)閉。

  3. 連接池沒有檢查連接有效性:如果連接池在獲取連接時沒有進行有效性檢查(例如沒有啟用 testOnBorrow 和設置 validationQuery),則可能會將已被數(shù)據(jù)庫服務器關(guān)閉的連接分配給應用程序,從而導致通信問題。

解決這個問題的關(guān)鍵是確保連接池和數(shù)據(jù)庫服務器之間的配置相互協(xié)調(diào)。可以通過調(diào)整連接池和數(shù)據(jù)庫服務器的相關(guān)參數(shù)以及啟用連接有效性檢查來解決連接空閑超時問題。

解決方案

這個錯誤表明在使用數(shù)據(jù)庫連接時出現(xiàn)了通信問題。從錯誤日志來看,連接在一段時間內(nèi)沒有收到或發(fā)送任何數(shù)據(jù)包,超過了服務器配置的 wait_timeout 值。這可能是因為連接長時間處于空閑狀態(tài),而 MySQL 服務器端的 wait_timeout 參數(shù)設置為 8 小時(28,800 秒)。

為了解決這個問題,可以嘗試以下幾個方法:

  1. 在 druid 連接池中配置 testOnBorrow 參數(shù),將其設置為 true。這將在從連接池獲取連接時檢查連接的有效性。另外,你需要配置 validationQuery 參數(shù),以便在獲取連接時執(zhí)行一個簡單的 SQL 查詢以測試連接的有效性。例如,對于 MySQL,可以設置 validationQuerySELECT 1。
druid:
  testOnBorrow: true
  validationQuery: SELECT 1

  1. 調(diào)整 druid 連接池的 maxIdleminEvictableIdleTimeMillis 參數(shù)。maxIdle 參數(shù)用于設置連接池中允許的最大空閑連接數(shù),minEvictableIdleTimeMillis 參數(shù)表示一個連接空閑多長時間后將被清除或回收。這可以防止長時間未使用的連接被 MySQL 服務器關(guān)閉。
druid:
  maxIdle: <設置最大空閑連接數(shù)>
  minEvictableIdleTimeMillis: <設置空閑連接的最小可驅(qū)逐時間(毫秒)>

  1. 在 MySQL 服務器端增加 wait_timeout 參數(shù)的值。這將允許連接在空閑狀態(tài)下保持更長的時間。然而,需要注意的是,這可能會導致服務器資源占用較高,因此請根據(jù)實際情況進行調(diào)整。

  2. 在連接 MySQL 數(shù)據(jù)庫時,使用 Connector/J 驅(qū)動的 autoReconnect=true 屬性。這樣在連接斷開后,驅(qū)動程序會嘗試自動重新連接。需要注意的是,這種方法可能會隱藏一些潛在的問題,因此在使用前要仔細權(quán)衡利弊。

jdbc:mysql://<hostname>:<port>/<database>?autoReconnect=true

嘗試根據(jù)上述方法調(diào)整 druid 連接池和 MySQL 服務器的配置,以解決這個通信問題。

網(wǎng)上很多人都是把max-wait設置的小點, 例如 10000, 然后解決的, 這真的可以解決這個問題嗎?

maxWait 參數(shù)并不是用來表示連接池持有數(shù)據(jù)庫連接空閑也依舊占用多長時間的意思。實際上,maxWait 是 Druid 連接池配置中的一個參數(shù),表示從連接池中獲取連接時的最大等待時間。

當一個線程需要從連接池獲取一個連接時,如果連接池中沒有可用的連接,該線程會等待。maxWait 參數(shù)用于指定等待的最大時間(以毫秒為單位)。如果在 maxWait 所設置的時間內(nèi)仍然無法獲取到可用的連接,那么該線程將拋出一個異常。這可以防止線程因為等待連接而長時間阻塞。

另一方面,關(guān)于連接池持有數(shù)據(jù)庫連接空閑依舊占用的時間,你可以查看 minEvictableIdleTimeMillis 參數(shù)。這個參數(shù)表示連接空閑多長時間后會被清除或回收。通過設置這個參數(shù),你可以控制連接池中連接的最小空閑時間。

max-wait 設置得較?。ɡ?10,000 毫秒)并不能直接解決這個問題。實際上,減小 max-wait 只是減少了等待從連接池中獲取連接的時間,但并不能解決連接空閑超時的根本問題。

max-wait 設置得較小可能會減輕問題的表面現(xiàn)象,因為在高并發(fā)場景下,等待時間較短可能會使得連接更快地被分配給其他線程,從而減少單個連接空閑的時間。然而,這并不能保證在低負載情況下連接不會長時間保持空閑狀態(tài)。

為了解決這個問題,建議采用前面提到的方法,例如:

  1. 使用 testOnBorrowvalidationQuery 參數(shù)來檢查從連接池獲取的連接的有效性。
  2. 調(diào)整 maxIdleminEvictableIdleTimeMillis 參數(shù),以便更好地管理連接池中的空閑連接。
  3. 調(diào)整 MySQL 服務器的 wait_timeout 參數(shù),使其允許連接在空閑狀態(tài)下保持更長的時間。
  4. 在連接字符串中添加 autoReconnect=true,以便在連接斷開時嘗試自動重新連接。

這些方法可以更有效地解決連接空閑超時的問題。

網(wǎng)上有人說testOnReturn和testOnBorrow都為false時性能最好, 是這樣的嗎?

testOnReturntestOnBorrow 都設置為 false 時,性能可能會有所提升。這是因為在這種情況下,連接池不會在歸還或獲取連接時執(zhí)行額外的有效性檢查。這樣可以減少一些開銷,從而提高性能。

然而,并非所有情況下都適合將這兩個參數(shù)設置為 false。例如,在你之前提到的問題中,由于連接空閑超時導致的通信問題,這種情況下,將 testOnBorrow 設置為 true 可以幫助檢查連接的有效性,從而避免因為使用無效連接而導致的問題。

在實際應用中,需要根據(jù)具體場景和需求來決定是否啟用這些參數(shù)。如果數(shù)據(jù)庫服務器和連接池的配置良好,并且連接穩(wěn)定性較高,可以考慮將這些參數(shù)設置為 false 以提高性能。然而,如果連接穩(wěn)定性存在問題,或者需要確保連接的有效性,那么啟用這些參數(shù)可能是更好的選擇。

總之,在實際應用中,需要權(quán)衡性能和穩(wěn)定性,根據(jù)具體情況選擇合適的參數(shù)配置。文章來源地址http://www.zghlxwxcb.cn/news/detail-472628.html

到了這里,關(guān)于druid之連接空閑超時問題FIX的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • Kafka連接超時問題及解決方法

    Kafka是一個高性能、分布式的消息隊列系統(tǒng),被廣泛應用于大規(guī)模數(shù)據(jù)處理和實時流處理場景。然而,在使用Kafka進行遠程連接時,有時會遇到連接超時的問題。本文將介紹Kafka連接超時問題的原因,并提供一些解決方法。 連接超時問題通常會在以下幾種情況下出現(xiàn): 網(wǎng)絡問

    2024年02月04日
    瀏覽(19)
  • 解決FinalShel連接虛擬機超時問題

    解決FinalShel連接虛擬機超時問題

    為了解決鏈接超時問題,自己電腦底部任務欄開了一大堆,瀏覽器里網(wǎng)頁開了一個又一個,這種搜索無果的情況,持續(xù)了大概3天的時間,中間懷疑自我到是不是我的電腦硬件少了個螺絲什么的(哈哈哈哈),還好目前這一切都結(jié)束了。 這絕對是到目前為止難度和付出時間最不匹

    2024年01月18日
    瀏覽(21)
  • ElasticSearch|ES 連接超時及創(chuàng)建連接失敗問題定位過程記錄

    socket.timeout:等待源端服務器響應超時 ConnectionRefusedError:嘗試創(chuàng)建連接被拒絕 ES 集群中某個節(jié)點的 ES 主進程被殺(由于服務器內(nèi)存不足導致),導致該節(jié)點 ES 重新拉起,報 “嘗試創(chuàng)建連接被拒絕”; ES 集群中某個節(jié)點的服務器內(nèi)存不足,導致該節(jié)點 ES 的 cache 被清空,E

    2024年02月04日
    瀏覽(31)
  • 【數(shù)據(jù)庫連接問題】Java項目啟動時無限異常com.alibaba.druid.pool.DruidDataSource : create connection SQLException

    【數(shù)據(jù)庫連接問題】Java項目啟動時無限異常com.alibaba.druid.pool.DruidDataSource : create connection SQLException

    Java項目啟動失敗, ERROR:com.alibaba.druid.pool.DruidDataSource : create connection SQLException 在此之前這個SpringBoot項目中使用的是單一數(shù)據(jù)庫讀寫策略。今天嘗試使用讀寫分離策略,在 application.yml 配置文件中加入了以下讀寫分離相關(guān)內(nèi)容后啟動項目失敗。 根據(jù)網(wǎng)上的解決方法,初步懷

    2024年02月16日
    瀏覽(24)
  • 【macOS 系列】下載brew或其他依賴包提示連接超時的問題解決

    【macOS 系列】下載brew或其他依賴包提示連接超時的問題解決

    在下載brew或其他依賴包提示連接超時 錯誤信息: 最簡單的方式,就是修改DNS:為 114.114.114.114 或者 8.8.8.8 就好。 如何修改: 右上角-網(wǎng)絡-網(wǎng)絡偏好設置-高級: 最終的效果: 如果你在web前端開發(fā)、面試、前端學習路線有困難可以加我V:imqdcnn。免費答疑,行業(yè)深潛多年的技

    2024年02月12日
    瀏覽(18)
  • 軟件測試|解決Github port 443 : Timed out連接超時的問題

    軟件測試|解決Github port 443 : Timed out連接超時的問題

    前言 GitHub是全球最大的開源代碼托管平臺之一,許多開發(fā)者和團隊使用它來管理和協(xié)作開源項目。但在當下,我們在clone或者提交代碼時會經(jīng)常遇到\\\"GitHub Port 443: Timed Out\\\"錯誤,這意味著我們的電腦無法建立與GitHub服務器的安全連接。這個問題通常由網(wǎng)絡問題或防火墻設置引起

    2024年02月07日
    瀏覽(37)
  • 【完美解決】GitHub連接超時問題 Recv failure: Connection was reset

    【完美解決】GitHub連接超時問題 Recv failure: Connection was reset

    已經(jīng)開了梯子但是在Idea中使用git(GitHub)還是連接超時 Recv failure: Connection was reset 。此時需要讓git走代理。 1.對右下角網(wǎng)絡點擊右鍵 - 打開 網(wǎng)絡和Internet設置 2. 代理 - 查看到地址和端口號 127.0.0.1:7890 3.在終端(cmd)輸入命令 4.查看是否設置成功 至此完成 相當絲滑 ^ ^

    2024年02月08日
    瀏覽(24)
  • Rancher連接超時問題:解決dial tcp xxx:: i/o timeout錯誤

    Rancher連接超時問題:解決dial tcp xxx:: i/o timeout錯誤 在使用Rancher進行編程時,有時可能會遇到連接超時的問題。特別是在執(zhí)行Post請求時,可能會收到類似于\\\"dial tcp xxx:: i/o timeout\\\"的錯誤消息。本文將介紹如何解決這個問題,并提供相應的源代碼示例。 出現(xiàn)這個錯誤的原因通常

    2024年02月05日
    瀏覽(20)
  • Android Studio或IntelliJ IDEA 構(gòu)建Gradle項目時,gradle下載時連接超時問題

    Android Studio或IntelliJ IDEA 構(gòu)建Gradle項目時,gradle下載時連接超時問題

    用IntelliJ IDEA 創(chuàng)建一個Gradle項目,下載gradle時顯示連接超時。 問題如下 : 在項目根目錄的gradle目錄下,gradle-wrapper.properties文件定義了用于構(gòu)建項目的gradle工具的下載地址 services.gradle.org 。由于該網(wǎng)站的服務器在國外,所以在國內(nèi)訪問可能存在連接超時問題,訪問不到。 筆者

    2024年02月04日
    瀏覽(23)
  • 若依框架 - 短時間內(nèi)斷開連接,重復跳轉(zhuǎn)至登錄界面問題的解決方法(docker 與 redis)、令牌超時問題

    在很短的時間內(nèi)不去操作系統(tǒng),就會自動提示, 登錄狀態(tài)已過期,您可以繼續(xù)留在該頁面,或者重新登錄 ,所以老是要跳轉(zhuǎn)到登錄界面,這一點很麻煩,非常影響用戶體驗。 令牌設置超時時間,過于短暫; redis 服務的啟動配置文件有問題,沒有配置密碼登錄,而是默認配置

    2024年02月13日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包