zoukankan      html  css  js  c++  java
  • 谈谈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 

    MySQL Can't create a new thread报错分析

    CentOS 7

    CentOS 7下升级MySQL5.7.23的一个坑


    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的内容

    (2) 找到mysqld的进程号,echo `pidof mysqld`,7358
    (3) 查看5号文件的内容cat /proc/7358/fd/5


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

  • 相关阅读:
    JavaScript闭包基本概念
    JavaScript函数
    JavaScript类型比较
    Java思维导图之Class对象
    Python进阶之装饰器
    Java IO学习要点导图
    sl003完全平方数
    sl002个税计算
    sl001数字拼接
    装饰器
  • 原文地址:https://www.cnblogs.com/wangdong/p/10019854.html
Copyright © 2011-2022 走看看