springboot 項(xiàng)目mysql 連接過(guò)多問(wèn)題排查與解決

背景

我們自己平臺(tái)的產(chǎn)品發(fā)現(xiàn)指定的mysql數(shù)據(jù)庫(kù)后臺(tái)發(fā)現(xiàn)連接非常多燕少,過(guò)多的連接對(duì)于數(shù)據(jù)庫(kù)是一種負(fù)擔(dān)。這些連接完成SQL執(zhí)行任務(wù)后空閑著啥事也不干,白白占用內(nèi)存資源熔恢,如果這些連接堆積起來(lái),將導(dǎo)致MySQL超過(guò)最大連接數(shù)臭笆,從而無(wú)法新建MySQL連接叙淌,有可能導(dǎo)致“Too many connections”的錯(cuò)誤。

解決

1愁铺、

一反饋連接多鹰霍,我第一件事是查看mysql現(xiàn)在到底有多少連接。

SELECT count(*) FROM information_schema.PROCESSLIST WHERE DB = 'bcloud_dev001'

去查看到底bcloud_dev001這個(gè)數(shù)據(jù)庫(kù)占用了多少連接茵乱。 一看竟然有1030個(gè)連接茂洒。

然后我第一猜想會(huì)不會(huì)有連接泄露的情況呢? 然后我參考了這篇文章了解了下 information_schema.PROCESSLIST 這個(gè)表的參數(shù) https://zhuanlan.zhihu.com/p/30743094(具體細(xì)節(jié)不講)
然后我按照表中的TIME 字段進(jìn)行排序

SELECT * FROM information_schema.PROCESSLIST WHERE DB = 'bcloud_test001' ORDER BY TIME desc limit 50

如圖所示,發(fā)現(xiàn)應(yīng)該不是存在泄露以及別的情況似将,因?yàn)閿?shù)據(jù)TIME大值的很少获黔,而且都是在sleep狀態(tài) (sleep狀態(tài)就是等待客戶端向它發(fā)送執(zhí)行語(yǔ)句的狀態(tài))。(如果泄露的話在验,連接沒(méi)有關(guān)閉玷氏,那么連接 會(huì)一直存在下去。而且會(huì)出現(xiàn)大量的長(zhǎng)期存在的聯(lián)接腋舌。當(dāng)然了 這個(gè)要結(jié)合這連接池的配置一起看盏触,初始化連接與當(dāng)前連接個(gè)數(shù)比較)

2、

然后我轉(zhuǎn)手去找springboot中關(guān)于連接池的配置。springboot默認(rèn)的連接池是hikari連接池赞辩,這一塊不細(xì)講雌芽,會(huì)另開一篇文章講解。
找到配置以后發(fā)現(xiàn)還是竟然最小的連接數(shù)的值沒(méi)有設(shè)置辨嗽,最大的設(shè)置到了1024世落。那么問(wèn)題其實(shí)就解決了,
官網(wǎng)中對(duì)于最小值的配置解釋為
??minimumIdle
This property controls the minimum number of idle connections that HikariCP tries to maintain in the pool. If the idle connections dip below this value and total connections in the pool are less than maximumPoolSize, HikariCP will make a best effort to add additional connections quickly and efficiently. However, for maximum performance and responsiveness to spike demands, we recommend not setting this value and instead allowing HikariCP to act as a fixed size connection pool. Default: same as maximumPoolSize

它的默認(rèn)值為 maximumPoolSize 一樣糟需,所以相當(dāng)于初始化的時(shí)候就相當(dāng)于啟動(dòng)了一個(gè)最大值的參數(shù)的連接池屉佳。

后續(xù)自己更改了配置

#指定連接池初始化連接數(shù)
spring.datasource.minimum-idle=20
#指定連接池最大的連接數(shù),包括使用中的和空閑的連接
spring.datasource.maximum-pool-size=500

別的配置我也都反復(fù)看了洲押,我覺(jué)得默認(rèn)值就好武花。官網(wǎng)建議這里設(shè)置一個(gè)固定的連接池最好。但是這里我將最大值設(shè)置成了500杈帐,其實(shí)只是不想背鍋体箕。項(xiàng)目比較大,啥人寫的代碼都有挑童,萬(wàn)一泄露了都是個(gè)問(wèn)題累铅。

多說(shuō)下 wait-timeout

mysql的wait-timeout 這個(gè)配置針對(duì)jdbc連接mysql的情況。如果在mysql中有大量的sleep的連接炮沐,那么設(shè)置這個(gè)參數(shù)就顯得很有必要争群。它的作用是在設(shè)定的時(shí)間內(nèi)關(guān)閉sleep的連接。默認(rèn)值28800(8個(gè)小時(shí))
查看wait-timeout的值

show global variables like 'wait_timeout';

修改wait-timeout的值(將wait_timeout的值修改為30s)

set GLOBAL wait_timeout=30

這樣相當(dāng)于是設(shè)置了全局變量大年,但是如果重啟mysql服務(wù)的話换薄,這個(gè)值又會(huì)被初始化。如果想永久的變動(dòng)此值的話翔试,要在my.cnf的修改此值的大小轻要。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市垦缅,隨后出現(xiàn)的幾起案子冲泥,更是在濱河造成了極大的恐慌,老刑警劉巖壁涎,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凡恍,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡怔球,警方通過(guò)查閱死者的電腦和手機(jī)嚼酝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)竟坛,“玉大人闽巩,你說(shuō)我怎么就攤上這事钧舌。” “怎么了涎跨?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵洼冻,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我隅很,道長(zhǎng)撞牢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任外构,我火速辦了婚禮普泡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘审编。我一直安慰自己,他們只是感情好歧匈,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布垒酬。 她就那樣靜靜地躺著,像睡著了一般件炉。 火紅的嫁衣襯著肌膚如雪勘究。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天斟冕,我揣著相機(jī)與錄音口糕,去河邊找鬼。 笑死磕蛇,一個(gè)胖子當(dāng)著我的面吹牛景描,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播秀撇,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼超棺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了呵燕?” 一聲冷哼從身側(cè)響起棠绘,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎再扭,沒(méi)想到半個(gè)月后氧苍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泛范,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年让虐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片敦跌。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡澄干,死狀恐怖逛揩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情麸俘,我是刑警寧澤辩稽,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站从媚,受9級(jí)特大地震影響逞泄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拜效,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一喷众、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧紧憾,春花似錦到千、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至般眉,卻和暖如春了赵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背甸赃。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工柿汛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人埠对。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓络断,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親鸠窗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子妓羊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354