前景提要:
每晚有个跑批任务,同步人员和机构数据。
事故情景:
近几天一直同步失败,查看日志,发现总是在进行到半个小时后进行事务提交时报错,于是猜想是MySQL数据库的某个超时参数在作怪。
解决方案:
使用show variables like '%timeout%'
查看所有的超时相关参数设置,发现了两个参数很可疑:
- interactive_timeout:1800
- wait_timeout:1800
经过查阅官方资料,发现interactive_timeout
控制的是控制台或者workbench的连接超时,wati_timeout
控制的JDBC之类的非交互式超时时间。
所以解决方案就很简单了,通过命令set global wait_timeout = 3600
将超时时间设置为一小时即可解决跑批时间过长导致数据库连接超时的问题。