• mysql超时机制


    mysql每次建立一个socket连接(connect)时,这个socket都会占用一定内存。即使你关闭(close)连接时,并不是真正的关闭,而是处于睡眠(sleep)状态。

    当你下次再进行连接时,就可以快速启动当前处于睡眠状态的socket。但是过多的socket会占用大量的内存,为解决这个问题,mysql有个超时机制。

    你可以使用这条语句查看当前设置的超时时间长度:

    show global variables like 'wait_timeout';

    得到的结果如下:

    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | wait_timeout  | 28800   |
    +---------------+-------+
    1 row in set (0.00 sec)

    默认是28800秒,也就是8小时

    wait_timeout参数的作用:当一个闲置的连接超过8小时后,该连接就会断开。

    但是有时候需要长时间开启mysql连接,就需要改变这个参数的值。根据机器的硬件选择合适的参数值。

    有两种方法可以改变这个参数的值:

    1.通过语句改变这个参数的值。这中方法不需要重启mysql,但会先断开所有当前连接,然后重新连接。

    语句:set global wait_timeout = 100;执行结果:

    ERROR 2006 (HY000): MySQL server has gone away
    No connection. Trying to reconnect...
    Connection id:    3
    Current database: *** NONE ***

    Query OK, 0 rows affected (1.13 sec)

    最后一行表示已经更改成功。

    注:这个方法是局部性质的。当你下次重新启动mysql服务器时,执行show global variables like 'wait_timeout';时,仍然是修改前的值。

    2.通过修改配置文件

    在mysql的安装目录下,有个mysql.ini文件

    添加如下的设置:

    [mysqlld]

    wait_timeout = 100

    interactive_timeout = 100

    然后重启mysql服务,更改就会生效。

    注:这个参数的含义:

    wait_timeout:mysql服务器关闭非交互式连接之前等待活动的秒数

    interactive_timeout:mysql服务器关闭交互式连接之前等待活动的秒数

  • 相关阅读:
    人工智能 tensorflow框架-->简介及安装01
    【亲测】自动构建多个指定的class并发执行:Jenkins+Maven+Testng框架
    【亲测】Appium测试Android混合应用时,第二次切换到WebView失败
    appium_v1.4.16版本自动化适配android7.0系统
    python之拆包与装包
    python3之线程
    python3之进程
    python3之tcp
    python3之udp
    python3面向对象(4)之__new__方法和__init__方法
  • 原文地址:https://www.cnblogs.com/zhugaopeng/p/8051823.html
Copyright © 2020-2023  润新知