MySQL : interactive_timeout v/s wait_timeout

Most of the database intensive applications are worring about the default values of these variables obviously. Developers used to inform me that they need to extend the wait_timeout value in order to complete the query execution.

After some googling, it is found that default “wait_timeout” value is good enough. We may need to reduce it to boost the server performance which will helpful to minimize the “sleep” process loaded in memory. Increasing number of sleeping process will reduces the server performance gradually. So always keep the default value and make it reduce until the program/application does not create any sleeping process which would helpful to improve the performance noticeable. Slow_log_query is another possible reason to have many sleeping process.

interactive_timeout : interactive time out for mysql shell sessions in seconds like mysqldump or mysql command line tools.
wait_timeout” : the amount of seconds during inactivity that MySQL will wait before it will close a connection on a non-interactive connection in seconds.

How to change the these variables

a. changing values at run time 
Log in to the mysql console and set the variable.

 
mysql> SET  interactive_timeout=200;
Query OK, 0 rows affected (0.01 sec)

mysql> SET GLOBAL  interactive_timeout=200;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like "%timeout%";
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| connect_timeout            | 200  |
| delayed_insert_timeout     | 300   |
| innodb_lock_wait_timeout   | 50    |
| innodb_rollback_on_timeout | OFF   |
| interactive_timeout        | 200 |
| net_read_timeout           | 200  |
| net_write_timeout          | 200  |
| slave_net_timeout          | 3600  |
| table_lock_wait_timeout    | 50    |
| wait_timeout               | 200 |
+----------------------------+-------+
10 rows in set (0.00 sec)

b. Using my.cnf : Add the following values in /etc/my.cnf” and restart the mysql server.

 
 [mysqld]
interactive_timeout=180
wait_timeout=180

Pls note that “wait_timeout” would be helpful to clear the sleeping process as “interactive_timeout” does not make any performance improvement since it affect the command line sessions. Obviously increasing the values of connect_timeoutnet_read_timeout andnet_write_timeout would help to skip the timeout errors when lengthy queries are being executed.

How to kill the MySQL Sleeping process

 
mysql> show full processlist;
+-------+------------+---------------------+---------------+---------+------+-------+-----------------------+
| Id    | User       | Host                | db            | Command | Time | State | Info                  |
+-------+------------+---------------------+---------------+---------+------+-------+-----------------------+
|  9435 | user | 192.168.10.15:52180 | db1 | Sleep   |   26 |       | NULL                  |
|  9943 | user | localhost:51179     | db2         | Sleep   |    1 |       | NULL                  |
|  9944 | user | localhost:54007     | db2          | Sleep   |   29 |       | NULL                  |
|  9947 | user | localhost:60638     | db2           | Sleep   |   29 |       | NULL                  |
| 10716 | root       | localhost           | NULL          | Sleep   | 5432 |       | NULL                  |
| 10851 | root       | localhost           | NULL          | Query   |    0 | NULL  | show full processlist |
+-------+------------+---------------------+---------------+---------+------+-------+-----------------------+
6 rows in set (0.00 sec)

mysql> kill 9944;
Query OK, 0 rows affected (0.00 sec)

mysql> show full processlist;
+-------+------------+---------------------+---------------+---------+------+-------+-----------------------+
| Id    | User       | Host                | db            | Command | Time | State | Info                  |
+-------+------------+---------------------+---------------+---------+------+-------+-----------------------+
|  9435 | user | 192.168.10.15:52180 | db1 | Sleep   |    7 |       | NULL                  |
|  9943 | user | localhost:51179     | db2         | Sleep   |    9 |       | NULL                  |
|  9947 | user | localhost:60638     | db2         | Sleep   |   10 |       | NULL                  |
| 10716 | root       | localhost           | NULL          | Sleep   | 5473 |       | NULL                  |
| 10851 | root       | localhost           | NULL          | Query   |    0 | NULL  | show full processlist |
| +-------+------------+---------------------+---------------+---------+------+-------+-----------------------+
7 rows in set (0.01 sec)
mysql>

 

 

On thread startup, the session wait_timeout value is initialized from the global wait_timeout value or from the global interactive_timeout value, depending on the type of client (as defined by the CLIENT_INTERACTIVEconnect option to mysql_real_connect()). 

参考:

http://www.serveridol.com/2012/04/13/mysql-interactive_timeout-vs-wait_timeout/

http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_wait_timeout

转载于:https://www.cnblogs.com/xiaotengyi/p/3698237.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值