以前也看到这个报错,一直没有解决,偶尔报的多了,重启mysqld就解决了。
今天又看了一下,每次报这个错的时候系统负载都很高,内存吃光这些都不是主要问题,关键在于可以打开的文件句柄数超过了my.cnf的--open-files-limit。
那么怎么解决了,无非就是在机器硬件许可的情况下加大这个值,注意,修改这个值是需要重启mysqld的,考虑到报错不多,生产服务器能不重启就不重启,所以先这么放着了,去优化一下其他地方,别的地方打开文件少了,自然就不会报错了。
ps:
ulimit -a可以看该用户单进程可以打开的文件数
[root@NEWDB ~]# less /proc/22126/fd/ #22126是mysqld的仅称号
Display all 8149 possibilities? (y or n)
可以看到mysqld当前打开了多少文件(包括网络连接)