zoukankan      html  css  js  c++  java
  • MySQL中too many connections超出最大连接数的处理方法

    MySQL最大连接数的问题

    在MySQL的源码中,默认最大的连接数是16384

    {"max_connections", OPT_MAX_CONNECTIONS, 

        "The number of simultaneous clients allowed.", (gptr*) &max_connections, 

        (gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 100, 1, 16384, 0, 1, 

        0},

    出现too many connections 的问题,此时已经没办法连接到MySQL上去动态修改max_connections,出现这种问题的可能性有

    1 前端应用的问题

    可能是由于前端的长连接数过多或者业务量的速增导致连接数比占满的情况

    2 自身连接数设置的问题

    解决的方法

    1 设置MySQL的max_connections, interactive_timeout的值,让MySQL来回收这部分连接

    2 避免长连接,使用短连接

    无法登录的处理方法

    [root@MASTER_03 ~]# !mysql

    mysql -uroot -p

    Enter password:

    ERROR 1040 (HY000): Too many connections

    临时的处理方法

    [root@MASTER_03 ~]# yum install gdb -y
    
    [root@MASTER_03 ~]# gdb -p $(cat /data/3306/tmp/mysql.pid) -ex "set max_connections=1100" --batch

    再登录即可

    mysql> show global variables like 'max_conn%';

    +--------------------+-------+

    | Variable_name      | Value |

    +--------------------+-------+

    | max_connect_errors | 10000 |

    | max_connections    | 1100  |

    +--------------------+-------+

    2 rows in set (0.00 sec)

    要保持一个原则 max_user_connections  < max_connections  

    当然,如果是percona这种版本中,有自带的方法,在Percona5.5的thread_pool里面提供了2个参数extra_port和extra_max_connections预留额外的连接,预防连接满了以后我们无法进入数据库进行相应的管理(具体略)

  • 相关阅读:
    隔离级别
    分析Hello2代码
    正则表达式
    Filter and servlet
    部署描述符
    Annotation
    LDAP and Implementation
    Restful levels and Hateoas
    servlet injection analysis
    隔离级别
  • 原文地址:https://www.cnblogs.com/olinux/p/5206367.html
Copyright © 2011-2022 走看看