最近处理一个web服务时,写数据库数据时,经常报“MySQL server has gone away”,一查发现是mysql的wait_timeout、interactive_timeout设置的过短,30s,导致超过这个时长,mysql server会自动断掉这个连接,后续再进行数据库操作就失败跑异常了。
查看mysql server超时时间:
msyql> show global variables like ‘%timeout%’;
设置mysql server超时时间(以秒为单位): 最小设置
msyql> set global wait_timeout=28800;
msyql> set global interactive_timeout=28800;
mysql默认是28800,即8小时。
(1)interactive_timeout: 服务器关闭交互式连接前等待活动的秒数 (2)wait_timeout: 服务器关闭非交互连接之前等待活动的秒数。 两者生效取决于:客户端是交互或者非交互的连接。 在交互模式下,interactive_timeout才生效;非交互模式下,wait_timeout生效。