wait_timeout and interactive_timeout 参数

这篇具有很好参考价值的文章主要介绍了wait_timeout and interactive_timeout 参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

wait_timeout and interactive_timeout 参数

  • 非交互模式连接:通常情况下,应用到RDS实例会采用非交互模式,具体采用哪个模式需要查看应用的连接方式配置,比如PHP通过传递MYSQL_CLIENT_INTERACTIVE常量给mysql_connect()函数即可开启连接的交互模式。wait_timeout参数控制非交互模式连接的超时时间(单位秒,默认值为24小时即86400秒),当非交互式连接空闲时间超过wait_timeout指定的时间后,RDS实例会主动关闭连接。
  • 对于交互模式连接:通过 mysql 客户端 与 mysql server 建立的连接是交互式连接,interactive_timeout参数控制交互模式连接的超时时间(单位秒,默认值为2小时即7200秒),当交互式连接空闲时间超过interactive_timeout指定的时间后,RDS实例会主动关闭连接。
  • wait_timeout和interactive_timeout这两个参数的修改,修改前已经存在的会话保持修改前的设置,修改后新创建的会话使用新的参数设置。

wait_timeout指的是“连接完成后,使用过程中”的等待时间

参数 作用
wait_timeout 非交互式连接建立完成后,使用过程中的等待时间(单位:秒)
interactive_timeout 交互式连接建立完成后,使用过程中的等待时间(单位:秒)
  • python 代码mysql_variable_wait_timeout_interactive_timeout.py

MySQL 8.0.26

client A client B client C
T1 mysql -h -P -u -p
set global wait_timeout = 10;
set global interactive_timeout = 20;
select @@global.wait_timeout, @@global.interactive_timeout;
result (10, 20)
T2 mysql -h -P -u -p
select @@session.wait_timeout, @@session.interactive_timeout;
result (20, 20)
db = pymysql.connect()
cursor = db.cursor()
cursor.execute("select @@session.wait_timeout, @@session.interactive_timeout;")
result (10,20 )
T3 set @@session.wait_timeout = 10;
select @@session.wait_timeout, @@session.interactive_timeout;
result (10, 20)
T4 wait 15s time.sleep(15)
T5 select @@session.wait_timeout, @@session.interactive_timeout;
(ERROR 4031 (HY000): The client was disconnected by the server because of inactivity. See wait_timeout and interactive_timeout for configuring this behavior.)
result(20,20)
cursor.execute("select @@session.wait_timeout, @@session.interactive_timeout;")
pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query')
T6 set @@session.wait_timeout = 20;
set @@session.interactive_timeout = 10;
select @@session.wait_timeout, @@session.interactive_timeout;
result (20, 10)
cursor.execute("set @@session.wait_timeout = 20;")
cursor.execute("set @@session.interactive_timeout = 10;")
�cursor.execute("select @@session.wait_timeout, @@session.interactive_timeout;")
result(20, 10)
T7 wait 15s time.sleep(15)
T8 select @@session.wait_timeout, @@session.interactive_timeout;
(Query OK)
result(20,10)
�cursor.execute("select @@session.wait_timeout, @@session.interactive_timeout;")
(Query OK)
result(20,10)

client A 在 T1 时刻将全局变量 wait_timeout 和 interactive_timeout 分别设置为 10s 和 20s。

client B 在 T2 时刻通过 mysql 客户端与 mysql server 建立连接(交互式连接),该连接中会话变量 wait_timeout 和 interactive_timeout 分别为 20s 和 20s, 因此可知交互式连接的会话变量 wait_timeout 和 interactive_timeout 都继承自全局变量 interactive_timeout 的值,接着 client B 在 T3 时刻,将会话变量 wait_timeout 设置为 10s,之后等待 15s,再查看会话变量 wait_timeout、interactive_timeout 时,发现连接已经断开,这说明交互式连接的连接闲置阈值由会话变量 wait_timeout 控制,client B 在 T6 时刻,将会话变量 wait_timeout 和 interactive_timeout 的值分别设置为 20s 和 10s,之后同样等待 15s,在 T8 时刻,再查看会话变量 wait_timeout、interactive_timeout 时,发现连接依旧未断开,直到 20s 后才断开连接,因此可知交互式连接的连接闲置阈值由会话变量 wait_timeout 控制,与会话变量 interactive_timeout 无关。

client C 在 T2 时刻通过 pymysql 与 mysql server 建立连接(非交互式连接),该连接中会话变量 wait_timeout 和 interactive_timeout 分别为 10s 和 20s, 因此可知非交互式连接的会话变量 wait_timeout 和 interactive_timeout 分别继承全局变量 wait_timeout 和 interactive_timeout 的值,接着 client C 在 T4 时刻等待 15s,再查看会话变量 wait_timeout、interactive_timeout 时,发现连接已经断开,这说明非交互式连接的连接闲置阈值由会话变量 wait_timeout 控制,client C 在 T6 时刻将会话变量 wait_timeout 和 interactive_timeout 的值分别设置为 20s 和 10s。之后等待 15s,在 T8 时刻,再查看会话变量 wait_timeout、interactive_timeout 时,发现连接依旧未断开,直到 20s 后才断开连接,因此可知非交互式连接的连接闲置阈值由会话变量 wait_timeout 控制,与会话变量 interactive_timeout 无关。

总结

  1. 交互式连接的会话变量 wait_timeout 和 interactive_timeout 都继承自全局变量 interactive_timeout 的值
  2. 非交互式连接的会话变量 wait_timeout 和 interactive_timeout 分别继承自全局变量 wait_timeout 和 interactive_timeout
  3. 无论是交互式连接还是非交互式连接,连接闲置阈值都由会话变量 wait_timeout 控制,与会话变量 interactive_timeout 无关。

FAQ

为什么叫交互式和非交互式连接?通俗解释不知道?

wait_timeout 和 interactive_timeout 参数应设置为多大?

  • 参数 wait_timeout 和 interactive_timeout 应尽量设置成相同
  • 设置为多大取决于业务,如果你面对的是成熟的开发(比如公司内部团队),可以设置小些,分钟级别就行。

参考资料

MySQL会话闲置时间控制
如何处理RDS MySQL连接数满情况文章来源地址https://www.toymoban.com/news/detail-475658.html

到了这里,关于wait_timeout and interactive_timeout 参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • openGauss学习笔记-199 openGauss 数据库运维-常见故障定位案例-Lock wait timeout

    199.1 执行 SQL 语句时,提示 Lock wait timeout 199.1.1 问题现象 执行SQL语句时,提示“Lock wait timeout”。 199.1.2 原因分析 数据库中存在锁等待超时现象。 199.1.3 处理办法 数据库在识别此类错误后,会自动进行重跑,重跑次数可以使用max_query_retry_times控制。 需要分析锁超时的原因,

    2024年01月16日
    浏览(58)
  • org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool

    Java HttpUtil 出现错误: org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool         最近项目中大量调用http请求,线上出现了 ConnectionPoolTimeoutException  这个问题,但是本地服务器一直没能复现出来,但是定位问题应该是之前调用http的工具类封装的有问

    2024年02月13日
    浏览(49)
  • MySql报1205:1205 - Lock wait timeout exceeded; try restarting transaction,出现1205如何解决

    问题:当在mysql执行一个DDL语句时候,报1205. 本来想删除一段时间的数据,语句如下: 报错如下:1205 - Lock wait timeout exceeded; try restarting transaction,主要是源数据都是屁了insert的,可能没有提交,资源被占,现在杀掉这个 锁住的进程id就OK。 1.执行 SHOW FULL PROCESSLIST,找到这个

    2024年02月13日
    浏览(52)
  • Kafka中的fetch-min-size、fetch-max-wait和request.timeout.ms配置

    当前kafka的版本为2.8.11,Spring Boot的版本为2.7.6,在pom.xml中引入下述依赖:  然后在yml配置文件进行如下配置: 1、fetch-min-size fetch-min-size表示消费者一次拉取请求中,服务器应该返回的最小数据量,单位是字节,默认值为1个字节。如果服务器没有足够的数据返回,请求会等待

    2024年02月02日
    浏览(45)
  • 关于Minio性能优化 A timeout exceeded while waiting to proceed with the request, please reduce your request

    具体报错:A timeout exceeded while waiting to proceed with the request, please reduce your request 经查阅资料,有4种解决方案 查阅文献: https://www.oomake.com/question/17229356 https://www.nuomiphp.com/t/6254af8578e87f77ee3d038c.html https://www.hxstrive.com/subject/minio/673.htm https://github.com/minio/minio/tree/master/docs/config#ap

    2024年02月16日
    浏览(51)
  • 【论文阅读笔记】SegVol: Universal and Interactive Volumetric Medical Image Segmentation

    Du Y, Bai F, Huang T, et al. SegVol: Universal and Interactive Volumetric Medical Image Segmentation[J]. arXiv preprint arXiv:2311.13385, 2023.[代码开源] 【论文概述】 本文思路借鉴于自然图像分割领域的 SAM ,介绍了一种名为SegVol的先进医学图像分割模型,旨在构建一种 图像分割基础模型 ,这是一个面向体

    2024年01月16日
    浏览(48)
  • 3D医学图像分割大模型 SegVol: Universal and Interactive Volumetric Medical Image Segmentation

    pub: 22 November, 2023 ArXiv [ paper] [ code] 1 体积图像分割通过准确提取器官、病变和组织等感兴趣的区域,在医学图像分析中起着至关重要的作用,在肿瘤监测、手术计划、疾病诊断和优化治疗等临床应用中有着广泛的应用。 2 公开可用的体积医学图像数据集通常由来自不同类别的

    2024年02月03日
    浏览(54)
  • Keil出现Flash Timeout.Reset the Target and try it again.

    解决方法建议:打开 Options for Target -Debug-Setting-Debug 在下面的选项中找到Reset选项,修改为SYSRESETREQ  

    2024年02月12日
    浏览(40)
  • nginx参数keepalive_timeout

    语法: keepalive_timeout timeout [header_timeout] 默认值: keepalive_timeout 75s; 使用字段: http, server, location 参数: 参数1指定了客户端与服务器 keep-alive的超时时间,值为0将禁用 keep-alive功能。 参数2(可选)在HTTP响应头”Keep-Alive: timeout=time” 字段中设置一个值。 HTTP 是一种无状态协议,客户端

    2024年02月15日
    浏览(39)
  • [实体关系抽取|顶刊论文]UniRel:Unified Representation and Interaction for Joint Relational Triple Extraction

    2022.11.16|EMNLP 2022|中国科学技术大学 |原文链接|源码链接 解决实体和关系异构表示问题 解决实体-实体交互和实体-关系交互异构建模问题 通过一个串联的自然语言序列联合编码统一实体和关系的表示,同时使用一个交互映射系统来统一交互 过去(如CasRel、PRGC)都在 关

    2024年02月04日
    浏览(105)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包