laravel队列出现Failed to open stream: Too many open files
Song •
5 次浏览 •
0个评论 •
2025年12月26日
在Laravel运行队列的过程中出现了Failed to open stream: Too many open files,但是正常的Web服务又没有问题,那么大概率是因为队列出现异常导致的。
一、解决办法
我们可以通过
ulimit -n查看当前限制,如果当前限制过低可以改为65536即可。
ulimit -n 65536但是如果是PHP则直接修改LimitNOFILE限制,但是这样一般解决不了问题;我们可以查看别的配置。
Laravel 官方已弃用 --daemon 模式,因为内存和资源泄漏无法避免。
我们队列的supervisor需要修改一下即可:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/baidu/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/baidu/storage/logs/worker.log
; 关键:让 worker 处理一定任务后退出,避免长期运行
stopwaitsecs=60然后重启队列即可。
二、如何排查问题?
我们可以查看是什么原因占用了文件描述符,具体方法如下,如下方法查看全部占用,前面是数量后面是PID:
lsof | awk '{print $2}' | sort | uniq -c | sort -nr | head -10然后我们看到数量占用后即可查看什么软件占用,找到什么原因占用解决问题就方便了。
ps -p 1331 -o pid,ppid,cmd,user,%cpu,%mem,lstart或者简单点:
ps -p 1331 -f更多相关好文
-
laravel中distinct()的使用方法与去重 2017-09-11 -
Laravel将view缓存为静态html,laravel页面静态缓存 2021-10-09 -
[ laravel爬虫实战--基础篇 ] guzzle描述与安装 2017-11-01 -
[ 配置教程 ] 在ubuntu16.04中部署LNMP环境(php7+maridb且开启maridb远程以及nginx多域名访问 )并配置laravel环境 2017-07-18 -
laravel队列出现Failed to open stream: Too many open files 2025-12-26
热门文章
-
laravel队列出现Failed to open stream: Too many open files 2025-12-26 -
Laravel保存文件到public文件夹出现Failed to open stream: Permission denied 2025-12-17 -
nginx如何查看当前访问的是哪个网址 2025-11-17 -
微信公众号回复菜单点击回复文本 2025-10-24 -
laravel+easywechat6出现No component_verify_ticket found以及修改缓存为redis 2025-09-09

Laravel保存文件到public文件夹出现Failed to open stream: Permission denied