mac环境下mysql5.7版本频繁提示MySQL server has gone away

问题表象

表象为:在频繁插入数据时候报错:

查看日志,也可以在MySQL客户端输入如下指令来获取:

show variables like ‘log_error’;

日志中显示:

[Warning] mysql File Descriptor 1130 exceeded FD_SETSIZE=1024

从日志可以发现,是mysql打算持有的文件描述符数量超过了系统的限制。

查资料

虽然知道问题就是文件打开过多的问题,但是怎么解决又不知道了。直到我找到如下问题以及回答:https://stackoverflow.com/questions/35347378/ (看elplatt的回答)。

题主的异常LOG和我的是一致的,所以我就开始尝试答案中所说的两个参数:

table_open_cache

max_connections

查看参数目前值

修改之前得先了解自己的MySQL这两个值目前是多少,不能瞎改。在MySQL客户端内输入如下指令获取目前值:

show variables like ‘table_open_cache’;

show variables like ‘max_connections’;

着手修改参数

我发现我的table_open_cache参数值是2000。这明显超过了日志中最大值1024,所以将MySQL此值缩小。

修改/etc/my.cnf:

[mysqld]

table_open_cache=500

然后重启MySQL。发现已经成功!问题不再复现。

开始我是将table_open_cache设置为1025,发现还是超了一些,为1043。所以想,这个参数只控制的是缓存表文件描述符的个数,但是mysql还会打开其他文件啊,比如各种日志文件等。那设置为1025肯定就不行了,得再小点,因为我是本地测试库,所以随意改为500,也不牵扯什么性能,能跑通程序就行。

我没有设置max_connections这个参数,因为我发现我只设置table_open_cache一个参数就能解决我的问题。

祝你好运。

posted @ 2021-06-23 11:49  Ariphan  阅读(208)  评论(0编辑  收藏  举报