springboot 项目mysql 连接过多问题排查与解决

背景

我们自己平台的产品发现指定的mysql数据库后台发现连接非常多,过多的连接对于数据库是一种负担。这些连接完成SQL执行任务后空闲着啥事也不干,白白占用内存资源,如果这些连接堆积起来,将导致MySQL超过最大连接数,从而无法新建MySQL连接,有可能导致“Too many connections”的错误。

解决

1、

一反馈连接多,我第一件事是查看mysql现在到底有多少连接。

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

去查看到底bcloud_dev001这个数据库占用了多少连接。 一看竟然有1030个连接。

然后我第一猜想会不会有连接泄露的情况呢? 然后我参考了这篇文章了解了下 information_schema.PROCESSLIST 这个表的参数 https://zhuanlan.zhihu.com/p/30743094(具体细节不讲)
然后我按照表中的TIME 字段进行排序

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

如图所示,发现应该不是存在泄露以及别的情况,因为数据TIME大值的很少,而且都是在sleep状态 (sleep状态就是等待客户端向它发送执行语句的状态)。(如果泄露的话,连接没有关闭,那么连接 会一直存在下去。而且会出现大量的长期存在的联接。当然了 这个要结合这连接池的配置一起看,初始化连接与当前连接个数比较)

2、

然后我转手去找springboot中关于连接池的配置。springboot默认的连接池是hikari连接池,这一块不细讲,会另开一篇文章讲解。
找到配置以后发现还是竟然最小的连接数的值没有设置,最大的设置到了1024。那么问题其实就解决了,
官网中对于最小值的配置解释为
🔢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

它的默认值为 maximumPoolSize 一样,所以相当于初始化的时候就相当于启动了一个最大值的参数的连接池。

后续自己更改了配置

#指定连接池初始化连接数
spring.datasource.minimum-idle=20
#指定连接池最大的连接数,包括使用中的和空闲的连接
spring.datasource.maximum-pool-size=500

别的配置我也都反复看了,我觉得默认值就好。官网建议这里设置一个固定的连接池最好。但是这里我将最大值设置成了500,其实只是不想背锅。项目比较大,啥人写的代码都有,万一泄露了都是个问题。

多说下 wait-timeout

mysql的wait-timeout 这个配置针对jdbc连接mysql的情况。如果在mysql中有大量的sleep的连接,那么设置这个参数就显得很有必要。它的作用是在设定的时间内关闭sleep的连接。默认值28800(8个小时)
查看wait-timeout的值

show global variables like 'wait_timeout';

修改wait-timeout的值(将wait_timeout的值修改为30s)

set GLOBAL wait_timeout=30

这样相当于是设置了全局变量,但是如果重启mysql服务的话,这个值又会被初始化。如果想永久的变动此值的话,要在my.cnf的修改此值的大小。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,264评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,549评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,389评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,616评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,461评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,351评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,776评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,414评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,722评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,760评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,537评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,381评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,787评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,030评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,304评论 1 252
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,734评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,943评论 2 336