zoukankan      html  css  js  c++  java
  • 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服务器关闭交互式连接之前等待活动的秒数

  • 相关阅读:
    Entity SQL 初入
    ObjectQuery查询及方法
    Entity Framework 的事务 DbTransaction
    Construct Binary Tree from Preorder and Inorder Traversal
    Reverse Linked List
    Best Time to Buy and Sell Stock
    Remove Duplicates from Sorted Array II
    Reverse Integer
    Implement Stack using Queues
    C++中const限定符的应用
  • 原文地址:https://www.cnblogs.com/zhugaopeng/p/8051823.html
Copyright © 2011-2022 走看看