当前位置: 首页 > 后端技术 > PHP

MySQL-MySQLserverhasgoneaway原因及解决方法

时间:2023-03-29 17:07:36 PHP

可能原因MySQL服务宕机MySQL连接被主动杀掉MySQL连接超时SQL过长,超过max_allowed_pa??cket的限制具体情况分析处理MySQL服务宕机可能是某些情况下异常,数据库在访问过程中宕机或重启,数据库访问请求时会出现错误。这种情况可以查看相应时间的MySQL相关日志,或者查询MySQL的运行时间。可以通过运行时间和日志判断此时是否有业务中断。mysql>showglobalstatuslike'uptime';+----------------+--------+|变量名|值|+--------------+--------+|正常运行时间|23948658|+----------------+-----------+MySQL连接被主动杀死有些系统会配置一些连接过多的情况,脚本主动杀掉相关的数据库请求进程,或者DBA在处理问题时手动杀掉,这种情况也会出现错误。mysql>showglobalstatuslike'com_kill';+----------------+------+|变量名|价值|+------------------+--------+|com_kill|100|+------------+--------+MySQL连接超时MySQL连接打开后,长时间没有发起新的查询请求,并且已经达到服务器端的超时时间,连接被服务器端强行关闭。这时候如果连接再次发起请求,就会报错MySQLserverhasgoneaway。这种情况比较常见。一般一个执行时间比较长的脚本,打开连接查询一些数据后,进行计算或者请求第三方写入数据,写入时超时。可以通过以下命令查看当前MySQL超时时间,mysql>showglobalvariableslike'wait_timeout';+--------------+--------+|变量名|值|+----------------+------+|等待超时|28800|+----------------+-------+可以通过以下命令临时修改超时时间,mysql>setglobalwait_timeout=60*60*8;如果想长期生效,需要修改数据库配置文件,重启MySQL服务。wait_timeout=28800interactive_timeout=28800SQL太长,超过了max_allowed_pa??cket的限制mysql会限制server段接收的数据包大小,有时大insert和update发送的数据包大小超过max_allowed_pa??cket的限制,服务器也会报错,导致写入或更新失败。mysql>showglobalvariableslike'%max_allowed_pa??cket%';+------------------------+------------+|变量名|值|+------------------------+------------+|最大允许数据包|1048576|+------------------------+------------+可以暂时使用以下命令来修改,mysql>setglobalmax_allowed_pa??cket=4*1024*1024;长期生效,需要修改数据库配置文件,重启MySQL服务。max_allowed_pa??cket=4M

最新推荐
猜你喜欢