mysql无法连接_谈谈MySQL无法连接的原因和分析方法

【可能的原因】

MySQL无法连接的原因有很多,比如:

1、数据库的请求量突增,实例连接数超过max_connections,或用户连接数超过max_user_connections,

这种情况连接时客户端一般会抛出对应的错误信息

如果max_connections打满,无法连到MySQL,可以尝试用gdb来修改参数

sudo gdb -p $(cat /var/run/mysqld/mysqld.pid) -ex "set max_connections=6000" –batch

2、MySQL使用的Max open files或Max processes超过操作系统限制

修改系统配置文件,可参考前面的文章:

CentOS 6

CentOS 7

3、磁盘空间不足

4、服务器负载过高,CPU消耗高,IO响应非常慢的情况也可能导致MySQL Hang住

5、MySQL内部锁等待

可以通过show engine innodb status的内容来判断

6、MySQL Bug引起

【分析思路】

如果用客户端连不上MySQL的情况下

1、先检查MySQL 的error log文件和操作系统的日志文件

2、检查是否网络问题,ping和telnet ip port

3、查询性能监控工具,观察连接数或并发线程数是否过高

4、检查是否服务负载过高引起

5、通过mysqld的进程号在系统层面来找到句柄的信息,来查看show engine innodb status的内容,方法如下:

(1)执行lsof -c mysqld|grep deleted,可以看到/data/tmp/ibkB49ZF映射的5号文件,句柄内容非空,它就是show engine innodb status的内容

8ea1155d6034bc3123de8b044865f2f2.png

(2)找到mysqld的进程号,echo `pidof mysqld`,7358

(3)查看5号文件的内容cat /proc/7358/fd/5

6、通过systemtap工具,可以在不登录MySQL的情况下查看正在执行的语句,脚本如下(不建议在生产环境直接使用)

0d4ca3e103da7c7986b9d991fa6a6d2c.png

ec8aa92c45210cd5991928d524510720.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值