gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 12:39:48 25 4
gpt4 key购买 nike

我在我的 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 文件的数量,有时它非常高(数千),有时它非常低(数百)。所以看起来 supervisor 不断地打开和关闭这些文件,我只需要确保系统允许 supervisor 有足够的空间来完成它的工作。

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

root             soft    nofile          10000
root hard nofile 10000

在新限制生效之前,我不得不重新启动 supervisor 并登录和退出我的系统几次,但最终它成功了。

关于php - Laravel 队列与 supervisord 打开太多 FIFO 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30573538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com