关于RDS MySQL 5.7中止连接问题的技术咨询
排查RDS MySQL 5.7中止连接问题
我正在排查中止连接问题,日志报错如下:
2022-11-21T20:10:43.215738Z 640870 [Note] Aborted connection 640870 to db: '<>' user: '<>' host: '10.0.0.**' (Got timeout reading communication packets)
我的排查思路是:先确定该连接是否为交互式连接,再对应调整wait_timeout(或interactive_timeout),若无效则调整net_read_timeout或net_write_timeout。现咨询以下问题:
- 是否有元数据表可查询连接类型(是否为交互式)?
- 网上调整
wait_timeout(或interactive_timeout)的教程均要求重启数据库,这是否必要?考虑到无需立即生效,新会话会读取新配置,若能追踪使用旧配置的连接数是否可行? - 能否推荐关于处理中止连接或调整超时值的博客/策略?
问题解答
1. 查询连接是否为交互式的元数据表
可以通过以下两种方式直接查询:
- 使用
sys.session视图(MySQL 5.7及以上支持),其中is_interactive字段直接标记连接是否为交互式:
SELECT id, user, host, is_interactive FROM sys.session;
- 查询
performance_schema.threads表,结合连接ID关联后查看is_interactive字段:
SELECT t.processlist_id, t.processlist_user, t.processlist_host, t.is_interactive FROM performance_schema.threads t WHERE t.processlist_id IS NOT NULL;
2. 调整超时参数是否需要重启数据库
不需要重启数据库。wait_timeout和interactive_timeout属于动态参数,通过SET GLOBAL语句即可在线修改,新建立的会话会自动使用新配置,已存在的连接仍沿用旧配置。
追踪使用旧配置的连接数完全可行,操作步骤如下:
- 先记录修改前的全局参数值:
SELECT @@GLOBAL.wait_timeout, @@GLOBAL.interactive_timeout;
- 查询当前所有连接的会话级参数值,对比全局新值:
SELECT id, user, host, @@session.wait_timeout AS session_wait_timeout, @@session.interactive_timeout AS session_interactive_timeout FROM information_schema.processlist;
- 统计使用旧配置的连接数量:
SELECT COUNT(*) AS old_config_connections FROM information_schema.processlist p JOIN performance_schema.threads t ON p.id = t.processlist_id WHERE t.processlist_id IS NOT NULL AND (@@session.wait_timeout != @@GLOBAL.wait_timeout OR @@session.interactive_timeout != @@GLOBAL.interactive_timeout);
等这些旧连接自然断开或主动终止后,所有连接就会统一使用新配置。
3. 处理中止连接及调整超时的策略建议
- 先明确超时类型:
wait_timeout/interactive_timeout针对连接空闲超时,net_read_timeout/net_write_timeout针对数据传输过程中的超时(比如客户端读取数据过慢导致),先通过日志和连接状态定位具体类型。 - 逐步调整参数:不要一次性大幅修改超时值,建议先小幅度调整(比如把默认8小时的
wait_timeout改成4小时),观察中止连接日志的变化后再微调。 - 监控连接状态:定期查询
information_schema.processlist或利用performance_schema监控连接的空闲时长、执行状态,定位是否存在大量长期空闲的连接。 - 应用层配合优化:建议应用侧配置连接池,合理设置连接池的空闲回收时间,避免应用持有过多空闲连接触发数据库的超时断开。
- RDS专属优化:AWS RDS MySQL可通过参数组修改全局参数,无需重启实例(静态参数除外);同时可借助RDS监控指标(如
AbortedConnections)直观观察参数调整后的效果。
内容的提问来源于stack exchange,提问作者skwokie
相关产品推荐
相关产品推荐

