91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

MYSQL 以及JAVA 連接錯誤的示例分析

發布時間:2021-10-25 10:32:15 來源:億速云 閱讀:150 作者:柒染 欄目:大數據

這期內容當中小編將會給大家帶來有關MYSQL 以及JAVA 連接錯誤的示例分析,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

最近開發告訴我,他們在測試系統的時候,會經常有連接MYSQL的連接被踢掉。具體給我的解釋是,JAVA的緩沖池連接MYSQL 保持連接,但再次使用的時候,報連接錯誤。

MYSQL 以及JAVA 連接錯誤的示例分析

對應應用程序的報錯的時間點,查了一下 PROXYSQL  和 MYSQL 的錯誤日志,的確是有相關的錯誤。

PROXYSQL 錯誤日志

MYSQL 以及JAVA 連接錯誤的示例分析

MYSQL 的錯誤日志

MYSQL 以及JAVA 連接錯誤的示例分析

那么問題來了,到底為什么會 got timeout reading communication packets。

DBER可以冠冕堂皇的告知,這是JAVA 的問題,不是數據庫的問題,但是如果作為 Architector of Databases,這樣的回答的確是遭恨。

所以必須搞清楚到底是怎么回事,故事就開始了。首先JAVA 程序是有緩沖池來連接到 MYSQL 的 ProxySQL 的,而ProxySQL 作為MYSQL 的中間件和緩沖,會將JAVA的連接轉接到 MYSQL (MGR  MTS)的主節點。

分析問題的一步步來,我們先從MYSQL 這個根上來

MYSQL 以及JAVA 連接錯誤的示例分析

從MYSQL 的角度來說,產生 Aborted_clients 和 Aborted_connects 有三個原因。

1  客戶端的連接,在MYSQL中被意外的終止了,至于這個意外是什么,有可能是當前的連接被DBA 使用KILL 終止了,或者其他的PT-KILL工具之類的方式,讓你的連接停掉了。

2 MYSQL 中的兩個參數, wait_timeout 和 interactive_timeout ,wait_timeout 是如果連接處于 idle的狀態多長時間,這個連接就會被踢掉。wait_timeout 和 interactive_timeout

wait_timeout 是你的連接的idle(空閑的時間),超過多少時間就被系統KILL 掉

interactive_timeout 是在程序和數據庫交互中,的間隔時間,如果你間隔時間較長,讓數據庫等的不耐煩了,就給你清理掉你的連接的線程。

程序員可能會問,WHY, 這主要是每個連接都會HOLD住一定的內存,例如 sort buffer join buffer 之類的,如果這些BUFFER 初始的時候就給的挺大,那后面如果連接太多,系統就可能OOM, 所以系統必須管管那些不負責的連接,光知道開,不知道關。

那如何來確認你現在的MYSQL 的連接數,這里設置都是 1800秒,也就是30分鐘。

MYSQL 以及JAVA 連接錯誤的示例分析

MYSQL 以及JAVA 連接錯誤的示例分析

說完這里,繼續說PROXYSQL, 作為目前最好的開源的MYSQL 的中間件,用的人不少。

其實proxysql 也是有線程池的,我目前的PROXYSQL 就有一個主34個子線程組成。

MYSQL 以及JAVA 連接錯誤的示例分析

而proxysql 中的連接池也是保存空閑連接的,而多長時間PROXYSQL 會進行一個ping 保持與MYSQL之間的連接,的時間是通過 mysql-ping_interval_server_msec 來進行。

MYSQL 以及JAVA 連接錯誤的示例分析

而mysql-connection_max_age_ms 是當空連接在沒有任何會話使用的情況下,空閑的時間超過了 mysql-connection_max_age_ms 的設置后PROXYSQL 會自動關閉這個連接。

MYSQL 以及JAVA 連接錯誤的示例分析

mysql-ping_timeout_server 則是PROXYSQL 為了維持和后端的空閑連接,每隔一段時間來發送PING 一次得到回復超時的時間

MYSQL 以及JAVA 連接錯誤的示例分析

寫到這里,估計能送網上BAIDU到很多,關于這樣的問題,而解決這樣問題的方法,大部分是修改MYSQL的 兩個timeout 的時間,默認為28800秒也就是 8個小時,他們建議將時間改為 31536000 秒,好吧我不打人,這樣的程序員每月能賺2000塊在北京都是多給。

最后我這個非JAVA Developer GOOGLE 出的解決方案是

在配置Druid DatasourceStat 

1 需要配置

validationQuery: select 1  (這樣的語句去訪問數據庫避免引起性能的消耗)

testWhileIdle: true

timeBetweenEvictionRunsMillis: 的設置一定要小于 mysql 或者 proxysql 的 timeout 值

我這里 timeBetweenEvictionRunMills 的值應該是小于 3分鐘。

到此 解決Communications link failure 的問題,告知段落,到目前為止還沒有新的錯誤告訴我,阿彌陀佛。

上述就是小編為大家分享的MYSQL 以及JAVA 連接錯誤的示例分析了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌恰县| 漳平市| 西平县| 怀远县| 大冶市| 江川县| 丽江市| 庆城县| 盐津县| 苍溪县| 南岸区| 巢湖市| 玉田县| 合山市| 玉山县| 怀仁县| 青川县| 岢岚县| 江油市| 彭水| 曲阜市| 连江县| 彭阳县| 福建省| 淳化县| 松原市| 祥云县| 吐鲁番市| 吴江市| 威海市| 西华县| 利川市| 益阳市| 安陆市| 集安市| 东辽县| 若羌县| 吴旗县| 济阳县| 莎车县| 慈利县|