MySQL频繁超时原因调查

1.排查原因

1.1.查询中大量数据被发送,由于数据传输时间不够导致

增加net_read_timeout的值。

修改 MySQL 的配置文件(通常是 my.cnfmy.ini 文件)。

在配置文件中,找到 [mysqld] 部分,并添加或修改以下行:

复制代码

iniCopy Code [mysqld]net_read_timeout = 60 #这里是60 我们修改成了600

保存文件后,重新启动 MySQL 服务

超时问题没有改善

1.2.初次连接时,连接时间设定太少

可以增加connect_timeout的值改善。

永久改变 connect_timeout 的值,使其在 MySQL 重启后仍然生效,需要修改 MySQL 的配置文件(通常是 my.cnfmy.ini 文件)。

在配置文件中,找到 [mysqld] 部分,并添加或修改以下行:

复制代码

iniCopy Code [mysqld]connect_timeout = 20 # 这里是20 我们设置成120

保存文件后,重新启动 MySQL 服务

超时问题没有改善

1.3.、BLOB值太大的问题

调整配置文件max_allowed_packet。

就更新大量的数据来说,可以进行两个方面的设置:将系统变量net_read_timeout设置得大一点,再将配置文件中的max_allowed_packet设置大一点。

max_allowed_packet 是 MySQL 服务器允许的最大数据包大小。默认情况下,这个值为 4MB。如果你的更新操作涉及到更大的数据量,例如大型 BLOB 数据的插入或更新,你可能需要增加这个参数的设置。

在 MySQL 的配置文件(如 my.cnfmy.ini)中,设置 max_allowed_packet

复制代码

[mysqld] max_allowed_packet = 100M # 设置 max_allowed_packet 为 100MB

超时问题没有改善

1.4.、排查网络带宽问题

  1. 数据传输速度 :如果数据库服务器和客户端之间的网络带宽有限,大数据的传输速度可能会变慢。这可能导致客户端在尝试读取或写入大量数据时超过了 net_read_timeoutnet_write_timeout 的设置,从而导致连接超时。

  2. 响应时间:网络带宽限制可能导致数据包的延迟增加,尤其是在数据量大或者连接数多的情况下。这可能使得客户端请求的响应时间变长,进而可能触发超时设置

解决方案: 增加网络带宽从原有的50MB,增加到100M

超时问题没有改善

1.5.索引,连接池问题

询问金磊 数据库创建的时候有设置索引和连接池

排查应该不是索引,连接池造成的影响

超时问题没有改善

1.6.交互与非交互超时时间过短导致

  1. wait_timeout

    1. 作用:控制非交互式连接的超时时间。这类连接通常是由应用程序或脚本通过连接池管理的,比如 Web 应用与数据库之间的连接。

    2. 影响 :如果一个连接在设定的 wait_timeout 秒内没有任何活动(例如查询、更新等),MySQL 会自动关闭这个连接。这可以避免长时间空闲的连接占用数据库资源。

  2. interactive_timeout

    1. 作用:控制交互式连接的超时时间。这类连接通常是用户直接通过命令行或 GUI 工具与数据库交互的连接。

    2. 影响 :与 wait_timeout 类似,但 interactive_timeout 更适用于用户交互时的连接。如果一个用户连接在设定的 interactive_timeout 秒内没有任何活动,MySQL 会自动关闭这个连接。

在 MySQL 的配置文件(如 my.cnfmy.ini)中,设置 wait_timeout,interactive_timeout:

复制代码

[mysqld] wait_timeout = 31536000 interactive_timeout = 31536000

超时问题没有改善

1.7.底层设备有个会话3600s老化的机制

底层设备有个会话3600s老化的机制,两端没有交互的话会话是会断开的,所以需要配置keepalived或者改成无状态安全组

相关推荐
小二·9 小时前
RAG + 向量数据库实战:ChromaDB / Milvus / FAISS 选型与性能横评
数据库·milvus·faiss
心中有国也有家10 小时前
AtomGit Flutter 鸿蒙客户端: ChangeNotifier 模式
学习·flutter·华为·harmonyos
矜持的左手10 小时前
电子小白的枕边书:电子学(The Art of Electronics)
数据库·restful
吴声子夜歌10 小时前
Redis 5.x——布隆过滤器
数据库·redis·缓存
取地址符10 小时前
C++学习笔记(基于learn-cxx)(1)
c++·经验分享·笔记·学习
RisunJan10 小时前
Linux命令-rlogin(远程登录)
linux·运维
深圳恒讯10 小时前
菲律宾云服务器与传统VPS的架构差异
运维·服务器·架构
蓝天下的守望者10 小时前
svt_apb_if里的宏定义问题
运维·服务器·数据库
小林ixn10 小时前
从“玩具工具”到“跨语言利器”:MCP 协议实战解析
运维·服务器·网络