为什么MySQL无法打开hosts.allow / hosts.deny?

我有一台存储服务器,在ZFS存储arrays上运行带有MySQL的Nexenta(OpenSolaris内核,Ubuntu用户空间),使用innodb_file_per_table和ulimit -n设置为8K。 mysqltuner.pl确认文件限制并声称有169个文件。

以下命令:

pfiles `fuser -c / 2>/dev/null 

表示一个具有485个文件/设备描述符的mysqld进程(它们几乎全部用于文件),所以我不知道调优脚本有多可靠,但仍然小于8K,而且这个列表也没有find其他的进程接近于极限。 全球使用的描述符总数约为1K。

那么什么原因可能会导致mysqld不断stream出以下错误?

 [date] [host] mysqld[pid]: warning: cannot open /etc/hosts.allow: Too many open files [date] [host] mysqld[pid]: warning: cannot open /etc/hosts.deny: Too many open files 

一切似乎实际上运行良好,但问题是不断充斥pipe理控制台,立即启动一个新的启动(不仅可重现,但总是从mysqld和总是主机文件,其权限是默认的-rw-r--r-- 1 root root )。 我可以,当然,从pipe理控制台,但我宁愿到它的底部,仍然允许mysqld警告/错误到达pipe理控制台。

编辑:不仅是实际的文件描述符在理智的限制之内,即使文件限制提高到65535并始终只在hosts.allow / deny上,问题也会持续(立即出现)。

鉴于Nexenta当时是基于OpenSolaris的,你可能会遇到这个问题 。 看起来似乎文件描述符限制并没有在整个系统中以一致的方式应用。

你真的在你的设置中使用hosts.allow / deny吗?

lsof输出是什么样的?