龙空技术网

如何快速处理mysql连接数占满的问题?

非典型程序猿平头哥 1782

前言:

今天我们对“mysql命令连接数”大体比较关注,咱们都想要知道一些“mysql命令连接数”的相关知识。那么小编也在网摘上搜集了一些有关“mysql命令连接数””的相关知识,希望看官们能喜欢,各位老铁们一起来了解一下吧!

今天上午线上的服务突然访问缓慢,页面大量访问超时,用户开始报障。立即远程连接应用服务器进行日志的排查,发现大量的数据库连接异常。现像如下:猜测可能是mysql连接数占满或者mysql服务异常导致问题。

数据库连接异常

1.首先远程连接mysql服务器

mysql -h ip -u root -p -P 3306

例如:mysql -h ××.××..××..××. -P 3306 -u xx-p

-h指定远程 ip地址 -P指定端口号 -u 指定用户名 -p 指定密码

幸运的远程连接成功,说明mysql服务应该没有问题,可能是连接数的问题。

2.查询可用连接数和最大连接数,发现连接数占满

连接数使用情况

3.查询当前running sql执行时间最长的10条

Select * frominformation_schema.processlist where info is not null order by time desc limit10 ;

发现有同一条sql大量占用mysql 连接数,导致mysql连接数占满,排查是一个批量推送的服务触发了,首先先屏蔽点批量推送功能,进行发版本并重启服务。

4.通过命令生成杀进程脚本

`select concat('KILL',id,';') from information_schema.processlist where user='root' into outfile '/var/lib/mysql-files/a.txt';`

或者增加时间条件

`select concat('KILL',id,';') from information_schema.processlist where user='root' and time>100 into outfile '/var/lib/mysql-files/aa.txt'; `

5.执行杀连接数脚本

source /var/lib/mysql-files/a.txt

6.查询线程执行状态

show status like 'Threads%'

批量kill 调连接数后服务正常;

经过紧张有序的排查,顺利解决线上的突发问题。

标签: #mysql命令连接数 #mysql连接异常 #mysql数据库空间满了 #mysql连接数满了 #mysql服务器端口3306被占用