解決Spring Boot中Druid連接池“discard long time none received connection“警告
在使用Spring Boot結(jié)合Druid連接池時(shí),開(kāi)發(fā)者可能會(huì)遇到"discard long time none received connection"的警告信息。雖然這通常不會(huì)影響應(yīng)用程序的正常運(yùn)行,但這些警告信息可能會(huì)讓人感到困擾。本文將探討這個(gè)問(wèn)題的原因,并提供幾種解決方法。
問(wèn)題現(xiàn)象
在使用Druid連接池的新版本(如1.2.5)時(shí),控制臺(tái)可能會(huì)時(shí)不時(shí)打印以下警告:
WARN com.alibaba.druid.pool.DruidAbstractDataSource - discard long time none received connection. , jdbcUrl : [your-jdbc-url]
這表明Druid連接池檢測(cè)到某些數(shù)據(jù)庫(kù)連接已經(jīng)超過(guò)了一定時(shí)間沒(méi)有活動(dòng),因此被標(biāo)記為長(zhǎng)時(shí)間空閑并被丟棄。
產(chǎn)生原因
經(jīng)過(guò)查看Druid的源碼,發(fā)現(xiàn)這個(gè)問(wèn)題的根源在于Druid連接池對(duì)MySQL連接的處理邏輯。在DruidAbstractDataSource
類(lèi)的testConnectionInternal
方法中,如果連接空閑時(shí)間超過(guò)60秒,Druid會(huì)認(rèn)為該連接已經(jīng)不再有效,并將其丟棄。
if (valid && isMySql) { long lastPacketReceivedTimeMs = MySqlUtils.getLastPacketReceivedTimeMs(conn); if (lastPacketReceivedTimeMs > 0 && mysqlIdleMillis >= timeBetweenEvictionRunsMillis) { discardConnection(holder); LOG.warn("discard long time none received connection. " + ", jdbcUrl : " + jdbcUrl + ", version : " + VERSION.getVersionNumber() + ", lastPacketReceivedIdleMillis : " + mysqlIdleMillis); return false; } }
解決辦法
1. 修改Druid配置
一種解決方法是修改Druid的配置,通過(guò)設(shè)置druid.mysql.usePingMethod=false
來(lái)避免使用MySQL的Ping方法來(lái)檢查連接有效性。這可以通過(guò)以下兩種方式實(shí)現(xiàn):
- 運(yùn)行時(shí)配置:在運(yùn)行參數(shù)中增加
-Ddruid.mysql.usePingMethod=false
。 - Spring配置:在Spring的配置文件中添加:
spring: datasource: druid: mysql: usePingMethod: false
2. 調(diào)整數(shù)據(jù)庫(kù)配置
另一種方法是調(diào)整數(shù)據(jù)庫(kù)的配置,例如MySQL的wait_timeout
參數(shù),以增加數(shù)據(jù)庫(kù)端的空閑超時(shí)時(shí)間,從而減少因?yàn)閿?shù)據(jù)庫(kù)端關(guān)閉連接而導(dǎo)致Druid報(bào)錯(cuò)的情況。
3. 代碼層面的優(yōu)化
最后,確保應(yīng)用程序在使用數(shù)據(jù)庫(kù)連接時(shí),能夠及時(shí)釋放資源,避免不必要的連接泄露。
結(jié)語(yǔ)
雖然"discard long time none received connection"的警告可能不會(huì)直接影響應(yīng)用程序的運(yùn)行,但解決這個(gè)問(wèn)題可以提高應(yīng)用程序的穩(wěn)定性,并減少不必要的資源浪費(fèi)。希望本文提供的方法能夠幫助你解決這個(gè)問(wèn)題。
到此這篇關(guān)于解決Spring Boot中Druid連接池“discard long time none received connection“警告的文章就介紹到這了,更多相關(guān)Spring Boot Druid連接池警告內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot中Druid連接池與多數(shù)據(jù)源切換的方法
- SpringBoot整合mybatis使用Druid做連接池的方式
- Springboot中加入druid連接池
- springboot2.0配置連接池(hikari、druid)的方法
- SpringBoot整合Druid實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接池和監(jiān)控
- springboot項(xiàng)目整合druid數(shù)據(jù)庫(kù)連接池的實(shí)現(xiàn)
- springboot集成druid連接池配置的方法
- springboot整合druid連接池的步驟
- SpringBoot使用 druid 連接池來(lái)優(yōu)化分頁(yè)語(yǔ)句
- SpringBoot整合Druid數(shù)據(jù)庫(kù)連接池的方法
相關(guān)文章
Java?IO流之StringWriter和StringReader用法分析
這篇文章主要介紹了Java?IO流之StringWriter和StringReader用法分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12Java如何獲取HttpServletRequest請(qǐng)求參數(shù)
我們常需要接口接收第三方推送的數(shù)據(jù),由于第三方可能不具備開(kāi)發(fā)能力,我們需要自行解析推送的數(shù)據(jù)格式,通過(guò)HttpServletRequest,我們可以解析字符串、JSON、XML以及文件等多種數(shù)據(jù)類(lèi)型,本文介紹了如何在Java中使用HttpServletRequest獲取請(qǐng)求參數(shù),感興趣的朋友一起看看吧2024-11-11springboot一個(gè)自定義注解如何搞定多線(xiàn)程事務(wù)
文章介紹了Spring?Boot中使用`@Async`注解進(jìn)行聲明式多線(xiàn)程編程的方法,以及如何通過(guò)自定義注解和AOP實(shí)現(xiàn)多線(xiàn)程事務(wù)控制,同時(shí),還解釋了`CountDownLatch`的使用場(chǎng)景及其工作原理2024-12-12SpringBoot實(shí)現(xiàn)ImportBeanDefinitionRegistrar動(dòng)態(tài)注入
在閱讀Spring Boot源碼時(shí),看到Spring Boot中大量使用ImportBeanDefinitionRegistrar來(lái)實(shí)現(xiàn)Bean的動(dòng)態(tài)注入,它是Spring中一個(gè)強(qiáng)大的擴(kuò)展接口,本文就來(lái)詳細(xì)的介紹一下如何使用,感興趣的可以了解一下2024-02-02Java設(shè)計(jì)模式之中介者模式(Mediator Pattern)簡(jiǎn)介
這篇文章主要介紹了Java設(shè)計(jì)模式之中介者模式(Mediator Pattern),需要的朋友可以參考下2014-07-07SpringBoot訪問(wèn)接口自動(dòng)跳轉(zhuǎn)login頁(yè)面的問(wèn)題及解決
這篇文章主要介紹了SpringBoot訪問(wèn)接口自動(dòng)跳轉(zhuǎn)login頁(yè)面的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12springmvc實(shí)現(xiàn)跨服務(wù)器文件上傳功能
這篇文章主要為大家詳細(xì)介紹了springmvc實(shí)現(xiàn)跨服務(wù)器文件上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08Spring Boot 2.2 正式發(fā)布,大幅性能提升 + Java 13 支持
隨著 Spring Framework 5.2.0 成功發(fā)布之后,Spring Boot 2.2 也緊跟其后,發(fā)布了第一個(gè)版本:2.2.0。下面就來(lái)一起來(lái)看看這個(gè)版本都更新了些什么值得我們關(guān)注的內(nèi)容2019-10-10maven依賴(lài)關(guān)系中的<scope>provided</scope>使用詳解
這篇文章主要介紹了maven依賴(lài)關(guān)系中的<scope>provided</scope>使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07