最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL出現(xiàn)莫名其妙的斷開連接以及解決方案

 更新時(shí)間:2023年11月04日 14:29:43   作者:努力奮斗0000001  
這篇文章主要介紹了MySQL出現(xiàn)莫名其妙的斷開連接以及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

前言

最近遇到在將本地的項(xiàng)目部署到服務(wù)器上之后遇到的一個(gè)奇怪問題

在部署完成后,網(wǎng)站當(dāng)時(shí)可以正常工作,但是第二天訪問網(wǎng)站的時(shí)候卻會(huì)遇到一個(gè)500 Server Error。

從日志中可以看出是MySQL數(shù)據(jù)庫(kù)出現(xiàn)了異常

翻譯:

最后一個(gè)數(shù)據(jù)包在 83827560 ms 之前被成功接收,最后一個(gè)數(shù)據(jù)包在83827560 ms 之前被成功發(fā)送。

比服務(wù)的配置參數(shù)wait_timeout的值要長(zhǎng)。

日志中給出的建議如下

翻譯:

你應(yīng)考慮在程序中進(jìn)行數(shù)據(jù)庫(kù)操作之前檢驗(yàn)數(shù)據(jù)庫(kù)連接的有效性或者將數(shù)據(jù)庫(kù)的autoReconnect屬性設(shè)置為true來避免這個(gè)問題

關(guān)于wait_timeout和autoReconnect下面我們會(huì)依次分析介紹

原因分析

我們進(jìn)入mysql的命令行查詢超時(shí)時(shí)間

28800單位是秒轉(zhuǎn)化成小時(shí)就是8小時(shí)

看出MySQL的默認(rèn)設(shè)置,當(dāng)一個(gè)連接的空閑時(shí)間超過8小時(shí)后,MySQL就會(huì)斷開該連接

所以發(fā)現(xiàn)問題出在如果超過這個(gè)wait_timeout時(shí)間(默認(rèn)是8小時(shí))對(duì)數(shù)據(jù)庫(kù)沒有任何操作,那么MySQL會(huì)自動(dòng)關(guān)閉數(shù)據(jù)庫(kù)連接以節(jié)省資源

數(shù)據(jù)庫(kù)連接自動(dòng)斷開的問題確實(shí)是在第二天發(fā)生了,也就是在一個(gè)晚上沒有對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作(顯然超過了8小時(shí))的情況下發(fā)生的這個(gè)問題

大家用命令show processlist; 可以查看Sleep狀態(tài)的進(jìn)程Sleep,同時(shí)可以看到每個(gè)進(jìn)程Sleep多久了:

下面介紹下解決和優(yōu)化辦法

解決方法

1.autoReconnect

這個(gè)參數(shù)表示在mysql超時(shí)斷開連接后會(huì)自動(dòng)重新連接

配置的話,只需要在連接mysql的語句寫上autoReconnect=true

jdbc:mysql://127.0.0.1:3306/stock_tweet?autoReconnect=true 

下面是MySQL官網(wǎng)對(duì)autoReconnect的解釋:

同時(shí)可以看到官網(wǎng)不推薦使用這個(gè)參數(shù),因?yàn)樗幸恍└弊饔?/p>

具體介紹下:

  • 原有連接上的事務(wù)將會(huì)被回滾,事務(wù)的提交模式將會(huì)丟失
  • 原有連接持有的表的鎖將會(huì)全部釋放
  • 原有連接關(guān)聯(lián)的會(huì)話Session將會(huì)丟失,重新恢復(fù)的連接關(guān)聯(lián)的將會(huì)是一個(gè)新的會(huì)話Session
  • 原有連接定義的用戶變量將會(huì)丟失
  • 原有連接定義的預(yù)編譯SQL將會(huì)丟失
  • 原有連接失效,新的連接恢復(fù)后,MySQL將會(huì)使用新的記錄行來存儲(chǔ)連接中的性能數(shù)據(jù)

2.修改配置

涉及到兩個(gè)配置參數(shù)interactive_timeout和wait_timeout

  • wait_timeout 指的是mysql在關(guān)閉一個(gè)非交互的連接之前所要等待的秒數(shù)
  • interactive_time 指的是mysql在關(guān)閉一個(gè)交互的連接之前所要等待的秒數(shù)

對(duì)于交互和非交互連接,說得直白一點(diǎn)就是,通過mysql客戶端連接數(shù)據(jù)庫(kù)是交互式連接,通過jdbc連接數(shù)據(jù)庫(kù)是非交互式連接。

配置方法:

1.會(huì)話方式

msyql> set global wait_timeout=2880000;
msyql> set global interactive_timeout=2880000;

這種方式只對(duì)當(dāng)前會(huì)話生效

2.修改配置文件方式

修改/etc/my.cnf文件,在 [mysqld] 節(jié)中設(shè)置:

之后再重啟下服務(wù)器就好了

注意:

wait_timeout這個(gè)值設(shè)置得大了,可能會(huì)導(dǎo)致空閑連接過多。

如果你的MySQL Server有大量的閑置連接,他們不僅會(huì)白白消耗內(nèi)存,而且如果連接一直在累加而不斷開,最終肯定會(huì)達(dá)到MySQL Server的連接上限數(shù),這會(huì)報(bào)’too many connections’的錯(cuò)誤。

連接池配置

因?yàn)檫B接池的配置也會(huì)影響項(xiàng)目和MySQL的連接,所以也需要對(duì)數(shù)據(jù)庫(kù)連接池的一些配置做一定修改

我們以Spring Boot 2.0默認(rèn)的數(shù)據(jù)庫(kù)連接池HikariCP為例

主要是下面這幾個(gè)配置

maximum-pool-size:

最大連接數(shù),超過這個(gè)數(shù),新的數(shù)據(jù)庫(kù)訪問線程會(huì)被阻,缺省值:10。

常見的錯(cuò)誤是設(shè)置一個(gè)太大的值,連接數(shù)多反而性能下降。

參考計(jì)算公式是:

#core_count:CPU個(gè)數(shù),effective_spindle_count:硬盤個(gè)數(shù)
connections = ((core_count * 2) + effective_spindle_count)

例如:一個(gè)4核,1塊硬盤的服務(wù)器,連接數(shù) = (4 * 2) + 1 = 9,湊個(gè)整數(shù),10就可以了。

minimum-idle:

最小的連接數(shù)目

max-lifetime:

最大的連接時(shí)間,用來設(shè)置一個(gè)connection在連接池中的存活時(shí)間

缺?。?0分鐘。強(qiáng)烈建議設(shè)置比數(shù)據(jù)庫(kù)超時(shí)時(shí)長(zhǎng)少一點(diǎn)(MySQL的wait_timeout參數(shù)一般為8小時(shí))。

idle-timeout:

一個(gè)連接idle狀態(tài)的最長(zhǎng)時(shí)間,超時(shí)則被釋放

其他參數(shù)詳見:https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL學(xué)習(xí)之InnoDB結(jié)構(gòu)探秘

    MySQL學(xué)習(xí)之InnoDB結(jié)構(gòu)探秘

    這篇文章主要是對(duì)InnoDB結(jié)構(gòu)的探秘,InnoDB是基于磁盤存儲(chǔ),其存儲(chǔ)的最基本單元是頁(yè),大小為16KB。而CPU和磁盤之間速度相差懸殊,所以通常使用內(nèi)存中的緩沖池來提高性能,感興趣的同學(xué)可以參考閱讀
    2023-03-03
  • MySQL提升大量數(shù)據(jù)查詢效率的優(yōu)化神器

    MySQL提升大量數(shù)據(jù)查詢效率的優(yōu)化神器

    這篇文章主要介紹了MySQL提升大量數(shù)據(jù)查詢效率的優(yōu)化神器,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • 如何設(shè)置mysql允許外部連接訪問

    如何設(shè)置mysql允許外部連接訪問

    大家好,本篇文章主要講的是如何設(shè)置mysql允許外部連接訪問,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • MYSQL造數(shù)據(jù)占用臨時(shí)表空間的解決方法

    MYSQL造數(shù)據(jù)占用臨時(shí)表空間的解決方法

    在MySQL中,臨時(shí)表空間并不是一個(gè)可以直接刪除的文件或目錄,因?yàn)榕R時(shí)表空間通常是由MySQL服務(wù)器在運(yùn)行時(shí)根據(jù)需要自動(dòng)創(chuàng)建和管理的,這篇文章主要介紹了MYSQL造數(shù)據(jù)占用臨時(shí)表空間,需要的朋友可以參考下
    2024-05-05
  • Mysql利用binlog日志恢復(fù)數(shù)據(jù)實(shí)戰(zhàn)案例

    Mysql利用binlog日志恢復(fù)數(shù)據(jù)實(shí)戰(zhàn)案例

    在MySQL中使用二進(jìn)制日志(binlog)恢復(fù)數(shù)據(jù)是一種常見的用于故障恢復(fù)或數(shù)據(jù)找回的方法,這篇文章主要介紹了Mysql利用binlog日志恢復(fù)數(shù)據(jù)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-11-11
  • 關(guān)于msyql事務(wù)隔離你要知道

    關(guān)于msyql事務(wù)隔離你要知道

    這篇文章主要介紹了關(guān)于msyql事務(wù)隔離的相關(guān)資料,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí)mysql,感興趣的朋友可以了解下
    2020-07-07
  • mysql獲取字符串長(zhǎng)度函數(shù)(CHAR_LENGTH)

    mysql獲取字符串長(zhǎng)度函數(shù)(CHAR_LENGTH)

    本文介紹一下關(guān)于mysql獲取字符串長(zhǎng)度的方法,希望此教程對(duì)各位同學(xué)會(huì)有所幫助哦。
    2013-11-11
  • MySQL中登錄與退出超全圖文講解

    MySQL中登錄與退出超全圖文講解

    大多數(shù)人都認(rèn)為在不需要事務(wù)化處理的情況下,MySQL是管理內(nèi)容最好的選擇,下面這篇文章主要給大家介紹了關(guān)于MySQL中登錄與退出圖文講解的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • MySQL優(yōu)化之連接優(yōu)化

    MySQL優(yōu)化之連接優(yōu)化

    MySQL連接優(yōu)化主要指客戶端連接數(shù)據(jù)庫(kù)以及數(shù)據(jù)庫(kù)為響應(yīng)客戶端的請(qǐng)求而打開數(shù)據(jù)表和索引的過程中涉及到的參數(shù)調(diào)整。下面我們來詳細(xì)的探討下
    2017-03-03
  • Mysql高效分頁(yè)詳解

    Mysql高效分頁(yè)詳解

    這篇文章主要為大家詳細(xì)介紹了Mysql高效分頁(yè)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01

最新評(píng)論

铁岭县| 隆德县| 彰武县| 怀来县| 文成县| 靖州| 昌黎县| 子长县| 湘西| 拉萨市| 灌南县| 离岛区| 桓仁| 河池市| 共和县| 同仁县| 罗江县| 左云县| 兴隆县| 志丹县| 桓台县| 安陆市| 锦屏县| 安平县| 寻甸| 富锦市| 乌海市| 收藏| 嘉黎县| 阜南县| 芦山县| 宁陕县| 宿州市| 洞头县| 泗水县| 衡东县| 沙河市| 金湖县| 东辽县| 东城区| 大安市|