zoukankan      html  css  js  c++  java
  • mysql sleep连接太多怎么办

    摘要:interactive_timeout和wait_timeout参数对sleep连接的影响

    interactive_timeout

    参数含义:服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。
    参数默认值:28800秒(8小时)
    官网文档:https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_interactive_timeout

    wait_timeout

    参数含义:服务器关闭非交互连接之前等待活动的秒数。
    在线程启动时,根据全局wait_timeout值或全局interactive_timeout值初始化会话wait_timeout值,取决于客户端类型(由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义)。
    参数默认值:28800秒(8小时)
    官网文档:https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_wait_timeout

    sleep连接

    参数含义:指processlist中Command类型为sleep的线程(线程正在等待客户端发送一个新的语句)
    官网文档:https://dev.mysql.com/doc/refman/5.6/en/show-processlist.html
    https://dev.mysql.com/doc/refman/5.6/en/thread-commands.html中介绍Sleep的含义是:The thread is waiting for the client to send a new statement to it.

    max_connections

    参数含义:最大允许客户端同时连接的数量。当客户端连接数超过该值的时候就会报错:Too many connections!
    官网文档:https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_max_connections

    max_user_connections

    参数含义:允许任何给定的MySQL用户帐户的最大并发连接数。默认的值为0,意味着“没有限制”。
    官网文档:https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_max_user_connections

    以上参数对连接数的影响

    MySQL所支持的最大连接数是有上限的,由参数max_connections控制。因为每个连接的建立都会消耗内存,因此我们希望客户端在连接到MySQL处理完相应的操作后就断开连接并释放占用的内存。如果你的MySQL Server有大量的闲置连接,他们不仅会白白消耗内存,而且如果连接一直在累加而不断开,最终肯定会达到MySQL Server的连接上限数,这会报’too many connections’的错误。对于wait_timeout的值设定,应该根据系统的运行情况来判断。在系统运行一段时间后,可以通过show processlist命令查看当前系统的连接状态,如果发现有大量的sleep状态的连接进程,则说明该参数设置的过大,可以进行适当的调整小些。

    调整参数

    调整前:

    [root@mysql_43 ~]# lxsql 3306 variables 'timeout'
    +-----------------------------+----------+
    | Variable_name | Value |
    +-----------------------------+----------+
    | connect_timeout | 10 |
    | delayed_insert_timeout | 300 |
    | have_statement_timeout | YES |
    | innodb_flush_log_at_timeout | 1 |
    | innodb_lock_wait_timeout | 5 |
    | innodb_rollback_on_timeout | OFF |
    | interactive_timeout | 31536000 |
    | lock_wait_timeout | 31536000 |
    | net_read_timeout | 30 |
    | net_write_timeout | 60 |
    | rpl_stop_slave_timeout | 31536000 |
    | slave_net_timeout | 3600 |
    | thread_pool_idle_timeout | 60 |
    | wait_timeout | 31536000 |
    +-----------------------------+----------+
    [root@mysql_43 ~]# lxsql 3306 connect
    +-------------+---------+----------+
    | USER | command | COUNT(*) |
    +-------------+---------+----------+
    | rouser | Sleep | 124 |
    | system user | Connect | 2 |
    | root | Sleep | 1 |
    | root | Query | 1 |
    +-------------+---------+----------+

    调整命令

    mysql> set global interactive_timeout=600;set global wait_timeout=600;
    记得修改配置文件:以防下次实例重启后恢复旧值
    [root@mysql_43 ~]# sed -i 's/wait_timeout=31536000/wait_timeout=600/g;s/interactive_timeout=31536000/interactive_timeout=600/g' /opt/mysql/my.cnf
    [root@mysql_43 ~]# cat /opt/mysql/my.cnf|grep "timeout"
    wait_timeout=600
    interactive_timeout=600

    看看是否调整成功:

    [root@mysql_43 ~]# xlsql 3306 variables 'timeout'
    +-----------------------------+----------+
    | Variable_name | Value |
    +-----------------------------+----------+
    | connect_timeout | 10 |
    | delayed_insert_timeout | 300 |
    | have_statement_timeout | YES |
    | innodb_flush_log_at_timeout | 1 |
    | innodb_lock_wait_timeout | 5 |
    | innodb_rollback_on_timeout | OFF |
    | interactive_timeout | 600 |
    | lock_wait_timeout | 31536000 |
    | net_read_timeout | 30 |
    | net_write_timeout | 60 |
    | rpl_stop_slave_timeout | 31536000 |
    | slave_net_timeout | 3600 |
    | thread_pool_idle_timeout | 60 |
    | wait_timeout | 600 |
    +-----------------------------+----------
  • 相关阅读:
    mongodb的sql日志
    mysql – 在WHERE子句中使用substr的SELECT语句
    MySQL视图
    Linux简单查找log
    转 信号量与PV操作
    二进制小数及 IEEE 浮点表示
    转 :原码,反码,补码
    转:C# Delegate委托 1
    C#中Invoke的用法2
    C#中Invoke的用法1
  • 原文地址:https://www.cnblogs.com/weifeng1463/p/9771182.html
Copyright © 2011-2022 走看看