日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Spring Boot集成Druid出現異常報錯的原因及解決

瀏覽:33日期:2023-07-13 14:45:20
目錄Spring Boot集成Druid異常異常分析原理追蹤禁用Ping Method為什么要清空空閑60秒以上的連接Spring Boot集成Druid異常

在Spring Boot集成Druid項目中,發現錯誤日志中頻繁的出現如下錯誤信息:

discard long time none received connection. , jdbcUrl : jdbc:mysql://******?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8, version : 1.2.3, lastPacketReceivedIdleMillis : 172675

經過排查發現是Druid版本導致的異常,在1.2.2及以前版本并未出現如此異常。而在其以上版本均存在此問題,下面就來分析一下異常原因及解決方案。

異常分析

首先上面的異常并不影響程序的正常運行,但作為程序員看到程序中不停的出現異常還是難以忍受的。所以還是要刨根問底的解決一下的。

跟蹤堆棧信息會發現對應的異常是從com.alibaba.druid.pool.DruidAbstractDataSource#testConnectionInternal方法中拋出的,對應的代碼如下:

if (valid && isMySql) { // unexcepted branch long lastPacketReceivedTimeMs = MySqlUtils.getLastPacketReceivedTimeMs(conn); if (lastPacketReceivedTimeMs > 0) {long mysqlIdleMillis = currentTimeMillis - lastPacketReceivedTimeMs;if (lastPacketReceivedTimeMs > 0 //&& mysqlIdleMillis >= timeBetweenEvictionRunsMillis) { discardConnection(holder); String errorMsg = 'discard long time none received connection. ' + ', jdbcUrl : ' + jdbcUrl + ', jdbcUrl : ' + jdbcUrl + ', lastPacketReceivedIdleMillis : ' + mysqlIdleMillis; LOG.error(errorMsg); return false;} }}

上述代碼中,MySqlUtils.getLastPacketReceivedTimeMs(conn) 是獲取上一次使用的時間,mysqlIdleMillis 就是計算出來空閑的時間,timeBetweenEvictionRunsMillis 是常量60秒。如果連接空閑了60秒以上,那就discardConnection(holder) 丟棄這個舊連接并順帶打印了一個日志LOG.warn(errorMsg)。

原理追蹤

在上述代碼中,我們看到進入該業務邏輯是有前提條件的,也就是valid和isMySql變量同時為true。isMySql為true是必須的,我們使用的本身就是Mysql數據庫。那么是否可以讓valid為false呢?這樣不就不會進入該業務處理了嗎?

來看看valid的來源,還是在該方法的上面:

boolean valid = validConnectionChecker.isValidConnection(conn, validationQuery, validationQueryTimeout);

我們找到validConnectionChecker的Mysql實現子類MySqlValidConnectionChecker,該類中對isValidConnection的實現如下:

public boolean isValidConnection(Connection conn, String validateQuery, int validationQueryTimeout) throws Exception { if (conn.isClosed()) {return false; } if (usePingMethod) {if (conn instanceof DruidPooledConnection) { conn = ((DruidPooledConnection) conn).getConnection();}if (conn instanceof ConnectionProxy) { conn = ((ConnectionProxy) conn).getRawObject();}if (clazz.isAssignableFrom(conn.getClass())) { if (validationQueryTimeout <= 0) {validationQueryTimeout = DEFAULT_VALIDATION_QUERY_TIMEOUT; } try {ping.invoke(conn, true, validationQueryTimeout * 1000); } catch (InvocationTargetException e) {Throwable cause = e.getCause();if (cause instanceof SQLException) { throw (SQLException) cause;}throw e; } return true;} } String query = validateQuery; if (validateQuery == null || validateQuery.isEmpty()) {query = DEFAULT_VALIDATION_QUERY; } Statement stmt = null; ResultSet rs = null; try {stmt = conn.createStatement();if (validationQueryTimeout > 0) { stmt.setQueryTimeout(validationQueryTimeout);}rs = stmt.executeQuery(query);return true; } finally {JdbcUtils.close(rs);JdbcUtils.close(stmt); }}

我們可以看到上述方法中有三個返回的地方:第一個連接已關閉;第二個使用ping的形式進行檢查;第三,使用select 1的方式進行檢查。而使用ping的形式檢查時,無論是否拋異常都會返回true。這里我們禁用該模式即可。

進入ping的業務邏輯主要靠變量usePingMethod來判斷,追蹤代碼會發現在這里進行的設置:

public void configFromProperties(Properties properties) { String property = properties.getProperty('druid.mysql.usePingMethod'); if ('true'.equals(property)) {setUsePingMethod(true); } else if ('false'.equals(property)) {setUsePingMethod(false); }}

那么,也就是說,當我們把系統屬性druid.mysql.usePingMethod設置為false即可禁用該功能。

禁用Ping Method

找到了問題的根源,那么剩下的就是如何禁用了,通常有三種形式。

第一,在啟動程序時在運行參數中增加:-Ddruid.mysql.usePingMethod=false。

第二,在Spring Boot項目中,可在啟動類中添加如下靜態代碼快:

static { System.setProperty('druid.mysql.usePingMethod','false');}

第三,類文件配置。在項目的DruidConfig類中新增加:

/** 解決druid 日志報錯:discard long time none received connection:xxx* */@PostConstructpublic void setProperties(){ System.setProperty('druid.mysql.usePingMethod','false');}

至此,已可以成功關閉該功能,異常信息再也不會出現了。

為什么要清空空閑60秒以上的連接

猜測,阿里給數據庫設置的數據庫空閑等待時間是60秒,mysql數據庫到了空閑等待時間將關閉空閑的連接,以提升數據庫服務器的處理能力。

MySQL的默認空閑等待時間是8小時,就是「wait_timeout」的配置值。如果數據庫主動關閉了空閑的連接,而連接池并不知道,還在使用這個連接,就會產生異常。

以上就是Spring Boot集成Druid出現異常報錯的原因及解決的詳細內容,更多關于Spring Boot集成Druid出現異常的資料請關注好吧啦網其它相關文章!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩中文字幕无砖| 88久久精品| 视频国产精品| 在线精品一区| 亚洲高清不卡| 久久一区精品| 国产精品毛片一区二区在线看| 在线 亚洲欧美在线综合一区| 国产精品最新自拍| 99riav国产精品| 欧美成人a交片免费看| 麻豆精品久久久| 一区免费视频| 日韩欧美精品一区| 国产精品一区二区99| 国产精品嫩草99av在线| 免费看av不卡| sm久久捆绑调教精品一区| 国产极品久久久久久久久波多结野 | 成人在线免费观看网站| 国产乱码精品一区二区三区亚洲人| 在线观看亚洲精品福利片| 国产无遮挡裸体免费久久| 欧美中文日韩| 国产一区二区三区四区大秀| 奇米777国产一区国产二区| 激情欧美一区二区三区| 国内不卡的一区二区三区中文字幕| 亚洲精选av| 欧美一区久久| 日本一区二区中文字幕| 欧美日韩亚洲一区二区三区在线| 欧美日韩xxxx| 加勒比视频一区| 日本欧美大码aⅴ在线播放| 一区二区亚洲视频| 丝袜美腿亚洲一区| 亚洲狼人精品一区二区三区| 久久国产中文字幕| 亚洲综合在线电影| 亚洲美女91| 国精品产品一区| 免费一区二区三区在线视频| 中文一区一区三区免费在线观| 在线一区电影| 麻豆亚洲精品| 中文字幕中文字幕精品| 美女国产精品| 青青国产精品| 亚洲香蕉久久| 久久国产精品免费精品3p| 日本午夜免费一区二区| av最新在线| 亚洲激情黄色| 一区在线视频观看| 亚洲一区二区三区无吗| 日韩免费精品| 欧美日韩夜夜| 蜜臀久久精品| 亚洲一区二区三区无吗| 91综合视频| 亚洲精品大片| 久久av在线| 久久亚洲美女| 国产精品一区二区99| 日韩成人综合| 一区二区视频欧美| 国产精品黄色| 狠狠躁少妇一区二区三区| 国产毛片久久久| 国产农村妇女精品一区二区| 久久国内精品自在自线400部| 99精品美女| 91av亚洲| 国产一区二区三区视频在线| 青青青免费在线视频| 色综合视频一区二区三区日韩| 国产亚洲在线观看| 国产精品免费大片| 欧美日中文字幕| 国产精品地址| 日韩av三区| 极品av在线| 日韩精品亚洲专区| 国产中文在线播放| 另类中文字幕国产精品| 美腿丝袜亚洲三区| 日韩精品视频网| 欧美日韩一区二区国产| 免费一级片91| 宅男在线一区| 蘑菇福利视频一区播放| 亚洲精品欧洲| 高清一区二区三区av| 国产欧美综合一区二区三区| 国产午夜一区| 国产精品久久久久77777丨| 99国产精品| 欧美国产一级| 制服诱惑一区二区| 99久久激情| 在线人成日本视频| 日韩欧美一区二区三区在线视频| 欧美va天堂在线| 日韩av黄色在线| 免费不卡在线观看| 日韩精品久久久久久久电影99爱| 精品在线91| 国产精品99一区二区三区| 免费成人在线观看| 亚洲欧美日本国产| 免费欧美一区| 久久精品九色| 日韩在线观看| 欧美日韩水蜜桃| 国语精品一区| 亚洲精品**中文毛片| 国产精品sm| 中文在线中文资源| 视频一区中文字幕国产| 国产精品二区影院| 国产精品毛片在线| av在线资源| 国产99久久| 亚洲精品九九| 久久精品二区亚洲w码| 国产成人1区| 在线看片国产福利你懂的| 亚洲人成在线网站| 欧美激情福利| 午夜国产欧美理论在线播放| 亚洲欧美专区| 色在线视频观看| 亚洲影院天堂中文av色| 国产精品调教| 亚洲资源网站| 黑丝一区二区三区| 9色国产精品| 欧美日韩伊人| 欧美日韩视频网站| 一二三区精品| 日韩久久精品| 欧美在线观看视频一区| 999精品一区| 久久精品福利| 日本成人精品| 免费精品国产的网站免费观看| 国产午夜久久av| 久久av一区| 亚洲成人va| 在线精品国产亚洲| 久久一区二区中文字幕| 日本不卡一区二区| 蜜臀av免费一区二区三区| 国产欧美69| 日韩精品国产精品| 欧美精选一区二区三区| 精品国产亚洲日本| 欧美性感美女一区二区| 精品久久91| 成人台湾亚洲精品一区二区| 亚洲精品看片| 麻豆久久精品| 噜噜噜久久亚洲精品国产品小说| 成人免费网站www网站高清| 日韩不卡在线| 日韩综合一区二区| 亚洲综合日本| 免费看精品久久片| 在线观看一区| 在线日韩成人| 国产精品一页| 91精品韩国| 亚洲毛片在线| 精品欧美视频| 四虎884aa成人精品最新| 欧美激情视频一区二区三区在线播放| 日韩精品高清不卡| 国产精品v日韩精品v欧美精品网站| 亚洲国产不卡| 夜夜嗨一区二区三区| 国产精品日韩久久久| 天堂成人免费av电影一区| 黄色国产精品| 精品72久久久久中文字幕| 国产成人a视频高清在线观看| 欧美激情麻豆| 中文字幕一区二区三区日韩精品| 久久午夜精品| 视频精品一区二区| 麻豆精品蜜桃| 老色鬼精品视频在线观看播放| 福利一区二区三区视频在线观看| 91亚洲精品视频在线观看| 欧美xxxx性| 欧美三区四区| 日韩精品久久理论片| 亚洲免费婷婷| 亚洲18在线| 国产精品欧美三级在线观看|