在php-fpm.conf中我有:
rlimit_files = 8192
我的服务器是来自Joyent的1G SmartMachine,这意味着它是一个具有1GB内存的Solaris。
我的问题是,在高负载我得到像这样的错误:
Warning (2): touch() [function.touch]: Unable to create file app/tmp/cache/persistent/cake_core_users_da because Too many open files in [cake/libs/file.php, line 125]
我的rlimit_files太低了,如果有的话,我应该设置多高?
你确定它实际上工作吗? 您可以在进程ID上使用“pfiles”来查看实际打开的内容。 您也可以在进程ID上运行“prctl”并查找“process.max-file-descriptor”值。 将会列出一个基本的,特权的和系统的价值。 这个过程的限制是最低的。 它可能是一个文件描述符漏洞的应用程序,如果它真的有很多打开。
Solaris本身可能强加的打开文件的数量有另一个限制。 例如,有一篇关于解决Solaris上的32位二进制文件中的256个文件描述符限制的文章 。
试着弄清楚你的php二进制文件是32位还是64位。
我认为我的问题是/其他地方,并与PHP进程活着有关。 我以某种方式固定它,不让它们永远活着。