interactive_timeout和wait_timeout的关系

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: interactive_timeout = 28800wait_timeout = 28800#这两个参数默认都是28800s,即8个小时;interactive_timeout指的是mysql在关闭一个交互的连接之前所要等待的秒数wait_timeout指的是mysql在关闭一个非交互的连接之前所要等待的秒数通过mysql客户端连接数据库是交互式连接,通过jdbc连接数据库是非交互式连接(1)session级别修改interactive_timeout=10,wait_timeout默认不变。

interactive_timeout = 28800

wait_timeout = 28800

#这两个参数默认都是28800s,即8个小时;

interactive_timeout指的是mysql在关闭一个交互的连接之前所要等待的秒数

wait_timeout指的是mysql在关闭一个非交互的连接之前所要等待的秒数

通过mysql客户端连接数据库是交互式连接,通过jdbc连接数据库是非交互式连接


(1)session级别修改interactive_timeout=10,wait_timeout默认不变。

mysql>set session interactive_timeout=10;

mysql>show variables like '%timeout%';

| interactive_timeout         | 10       |

| wait_timeout                | 28800

等10s后,此会话连接没有断开。


(2)session级别修改wait_timeout =10,interactive_timeout默认不变。

mysql>set session wait_timeout=10;

mysql>show variables like '%timeout%';

| interactive_timeout         | 28800        |

| wait_timeout                | 10

等10s后,此会话断开,随便输入一条命令报错,然后重新连接,但是此时连接id号发生变化了,并且wait_timeout会话设置失效,恢复默认值。

mysql>show processlist;

ERROR 2006 (HY000): MySQL server has gone away

No connection. Trying to reconnect...

Connection id:    5

Current database: *** NONE ***


(3)global级别修改interactive_timeout=10,wait_timeout默认不变。

mysql>set global interactive_timeout=10;

mysql>quit

[root@Darren1 ~]# mysql -uroot -p147258

mysql>show variables like '%timeout%';

| interactive_timeout         | 10        |

| wait_timeout                | 10

等10s后,此会话断开,随便输入一条命令报错,然后重新连接,但是此时连接id号发生变化了,

mysql>show processlist;

ERROR 2006 (HY000): MySQL server has gone away

No connection. Trying to reconnect...

Connection id:    9

Current database: *** NONE ***


(4)global级别修改wait_timeout=10,interactive_timeout 默认不变。

mysql>set wait_timeout=10;

mysql>quit

[root@Darren1 ~]# mysql -uroot -p147258

mysql>show variables like '%timeout%';

| interactive_timeout         | 28800       |

| wait_timeout                | 28800

设置无效。



总结:

1.控制连接最大空闲时长的是wait_timeout参数。


2.对于交互式连接,类似于mysql客户端连接,wait_timeout的值继承自服务器端全局变量interactive_timeout。  

 对于非交互式连接,类似于jdbc连接,wait_timeout的值继承自服务器端全局变量wait_timeout(未演示)。


3.判断一个连接的空闲时间,可通过show processlist输出中Sleep状态的时间

如:会话19为本地show processlist的id号,id18为另外一个空闲会话,可以看出这个会话已经空闲了61s

mysql>show processlist;

+----+------+-----------+------+---------+------+----------+------------------+

| Id | User | Host      | db   | Command | Time | State    | Info             |

+----+------+-----------+------+---------+------+----------+------------------+

| 18 | root | localhost | NULL | Sleep   |   61 |          | NULL             |

| 19 | root | localhost | NULL | Query   |    0 | starting | show processlist |

+----+------+-----------+------+---------+------+----------+------------------+


4.根据生产库经验,把这个两个参数的设置相同,都为5分钟:

interactive_timeout = 300

wait_timeout = 300


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
9月前
|
关系型数据库 MySQL Java
MySQL中wait_timeout与interactive_timeout详解
MySQL中wait_timeout与interactive_timeout详解
1951 0
PG14中的idle_session_timeout
PG14中的idle_session_timeout
165 0
|
监控
实践解读CLOSE_WAIT和TIME_WAIT
实践解读CLOSE_WAIT和TIME_WAIT
431 0
实践解读CLOSE_WAIT和TIME_WAIT
|
弹性计算 网络协议 Java
记一次time_wait & close_wait的讨论总结
记一次time_wait & close_wait的讨论总结
记一次time_wait & close_wait的讨论总结
|
网络协议
TCP Provider The semaphore timeout period has expired
我们一数据库服务器上有个作业最近几天偶尔会遇到下面错误(敏感信息已做处理),主要是报“TCP Provider: The semaphore timeout period has expired. [SQLSTATE 07008] (Error 121)  OLE DB provider "SQLNCLI" for linked server "(null)" returned message "Communication link failure". [SQLSTATE 01000] (Error 7412).  The step failed.”。
2234 0
TCP Provider  The semaphore timeout period has expired
|
SQL Java 关系型数据库
MySQL之wait_timeout和interactive_timeout参数
MySQL支持的最大连接数是有上限的,如果你的MySQL Server有大量的闲置连接,不仅会白白消耗内存,而且如果连接一直在累加而不断开,最终会达到MySQL Server的连接上限数,报‘to many connections’错误。
5000 0
|
关系型数据库 MySQL 测试技术
【MySQL】浅析interactive_timeout和wait_timeout
一 前言   这篇文章源于自己一个无知的提问,作为一个DBA 老鸟,实在汗颜 。如图,修改wait_timeout参数之后 并没有及时生效,于是乎去跑到技术支持群里问了。
5062 1
|
SQL Oracle 关系型数据库
MySQL:参数wait_timeout和interactive_timeout以及空闲超时的实现
水平有限,如果有误请指出源码版本:percona 5.7.22 一、参数意思 这里简单解释一下两个参数含义如下: interactive_timeout:The number of seconds the server waits for activity on an interactive .
2178 0
|
NoSQL Redis Sentinel