MySQL wait_timeout参数设置与网上常见错误小纠

转自:http://www.th7.cn/db/mysql/201312/37594.shtml


问题比较明显,应用连接已经失效。

23.579s之前创建了一个连接,之后再次使用此数据库连接就超时了。

查看数据库配置:

mysql> show  global  variables like  'wait_timeout';+---------------+-------+| Variable_name | Value |+---------------+-------+| wait_timeout  | 20    |+---------------+-------+1 row in set (0.00 sec)

服务器设置的时间为20s.从而说明上面超时的原因。

解决这个方法:

一:从应用层解决问题:修改连接池参数 缩短连接池内的连接超时时间。

二:从DB层解决问题:增大MySQL的连接失效时间。

mysql> show  global  variables like  'wait_timeout';+---------------+-------+| Variable_name | Value |+---------------+-------+| wait_timeout  | 20    |+---------------+-------+1 row in set (0.00 sec)


动态修改global参数,wait_timeout;

set global wait_timeout=30;

再次查看参数:

mysql> show  global  variables like  'wait_timeout';+---------------+-------+| Variable_name | Value |+---------------+-------+| wait_timeout  | 30    |+---------------+-------+1 row in set (0.00 sec)

设置完毕。

时间的大小设置不能随便,时间过长,导致过多的connection Sleep,占用较多系统资源。时间设置过小也不行。从业务出发,结合查询的耗时与业务吞吐量来进行设置比较合适吧。

常见误解:

网上有很多文章 没有清晰的认识 会话变量与全局变量的不同,查看了会话变量的超时时间,最终可能会导致将全局变量 wait_timeout设置成了31536000s!!

[mysqld]

wait_timeout=31536000

my.cnf里设置的参数是global级别。不是会话级别。

然而:

mysql> show variables like  'wait_timeout';+---------------+-------+| Variable_name | Value |+---------------+-------+| wait_timeout  | 28800 |+---------------+-------+1 row in set (0.00 sec)

是会话级别。有些人会把会话参数误认为全局参数。

正确的参数初始化设置应该为:

[mysqld]

wait_timeout=30

建议大家今后查询变量的时候不要使用缺省。

查询会话变量:

mysql> show session variables like  '%wait%'; +--------------------------+----------+| Variable_name            | Value    |+--------------------------+----------+| innodb_lock_wait_timeout | 50       || innodb_spin_wait_delay   | 6        || lock_wait_timeout        | 31536000 || wait_timeout             | 28800    |+--------------------------+----------+4 rows in set (0.00 sec)


查询全局变量:

mysql> show global variables like  '%wait%';        +--------------------------+----------+| Variable_name            | Value    |+--------------------------+----------+| innodb_lock_wait_timeout | 50       || innodb_spin_wait_delay   | 6        || lock_wait_timeout        | 31536000 || wait_timeout             | 30       |+--------------------------+----------+4 rows in set (0.00 sec)



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值