Ubuntu中Mysql 5.7的open_files_limit默认值过小导致的server has gone away问题解决
Mysql 5.7的open_files_limit 默认值为 1024,连接数过多和打开表,都会占用这个值。
问题:MySQL server has gone away
原因:open_files_limit默认值过小,导致mysql报错:Too many open files,进而mysql停止服务。
其它很多情况都会引起 gone away ,具体情况需要查询mysql的错误日志,本文主要解决由 open_files_limit 值引起的问题。
解决步骤:
第1步、修改 mysql.cnf 文件中
open_files_limit = 65535
如果没有则在 [mysqld] 后面添加一行
修改上述值重启mysql后,配置不会生效,在ubuntu中,还需要继续以下操作
第2步、修改 /lib/systemd/system/mysql.service 文件
在末尾添加
LimitNOFILE=infinity
LimitMEMLOCK=infinity
其中infinity是无限的意思,实测在笔者这台机器上的真实上限是:1048576
你也可以设置一个具体的值,如:
LimitNOFILE=65535
LimitMEMLOCK=65535
第3步、使配置生效
sudo systemctl daemon-reload
service mysql restart
如果你使用了 php-fpm ,你可能还需要重启 php-fpm
service php7.0-fpm restart
如果修改上述配置后仍然未达到指定数值,那么你还需要修改linux系统的 ulimit 限制,此部分修改方法请自行百度。