微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – Laravel队列与supervisord打开太多的FIFO文件

我在我的ubuntu服务器上使用beanstalkd和supervisord运行一个名为“webhooks”的Laravel队列作业.我可以通过进程ID 4403看到正确运行的作业:
webhooks                         RUNNING    pid 4403,uptime 4 days,19:47:01

如您所见,这项工作已经运行了4天.在我的错误日志中,我开始注意到出现以下错误

error:02001018:system library:fopen:Too many open files

当我跑lsof | PHP看看哪些文件是打开的,我注意到有大量的文件打开了类型FIFO.这是输出专家:

COMMAND     PID   TID       USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME     
PHP        4403             root    0r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root    1w     FIFO                0,8      0t0    9215812 pipe
PHP        4403             root    2w     FIFO                0,8      0t0    9215812 pipe
PHP        4403             root    3w     FIFO                0,8      0t0    9215812 pipe
PHP        4403             root    4w     FIFO                0,8      0t0    9215812 pipe
PHP        4403             root    8r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root    9r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   10r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   11r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   12r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   13r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   14r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   15r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   16r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   17r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   18r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   19r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   20r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   21r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   22r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   23r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   24r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   25r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   26r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   27r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   28r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   29r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   30r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   31r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   32r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   33r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   34r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   35r     FIFO                0,8      0t0    9215811 pipe
PHP        4403             root   36r     FIFO                0,8      0t0    9215811 pipe

这只是一个摘录.实际上有大约1200个这些FIFO文件打开.

有谁知道导致文件创建的原因是什么?什么类型的代码会导致系统打开新的FIFO文件?这些文件用于什么?

我最终增加了我的系统上的文件打开限制,这似乎解决了问题.主管文件说:

supervisord uses file descriptors liberally,and will enter a failure
mode when one cannot be obtained from the OS

在将文件打开限制增加到10,000之后,我已经停止看到错误.我会定期检查打开的FIFO文件数量,有时它会非常高(数千),而其他时候则低得多(数百).所以看起来主管不断打开和关闭这些文件,我只需要确保系统允许主管有足够的空间来完成它的工作.

如果有人想知道,我通过在/etc/security/limits.conf的底部添加以下两行来增加文件限制.

root             soft    nofile          10000
root             hard    nofile          10000

在新限制生效之前,我不得不重新启动主管以及登录退出系统几次,但最终还是有效.

原文地址:https://www.jb51.cc/laravel/136786.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。