定时任务服务器,报错 proc_open(): fork failed - Cannot allocate memory

1. 运行环境

1). 当前使用的 Laravel 版本?

laravel 5.5

2). 当前使用的 php/php-fpm 版本?

PHP 版本:php7.1
php-fpm 版本:php7.1

3). 当前系统

CentOS 8

4). 业务环境

生产环境

5). 相关软件版本

MySQL5.6

2. 问题描述?

定时任务服务器,每个整点(8:00、9:00、10:00…)都报这个错误。
整点定时任务有30个,只执行了前面20多个,剩下有几个没执行,报错了。
php.ini:最大内存是128M
服务器内存是 4G
PS:每个整点,服务器内存还剩1GB多,内存够用。
恳请各位大佬不吝赐教。:smile:

Laravel

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
sanders
最佳答案

基本上可以断定是那几个整点执行的任务导致的,可以在那几个任务里写日志输出一下 memory_get_usage()

2年前 评论
讨论数量: 11

php.ini 最大内存设置一下

2年前 评论
JerryBool (楼主) 2年前
2年前 评论
JerryBool (楼主) 2年前

以前做数据导出为excel,数据量一大,经常就OOM了,非常头疼。

这个报错提示,php运行中,分配的内存不够用了。

php内存改成256M试试

你本地能不能重现?能重现就慢慢打断点调试,看看哪个地方占了很多内存。

2年前 评论

我也遇到了类似定时任务导致内存不足的问题, 将耗时的任务放到队列去执行, 在这之前我将 memory_limit 设置到2048都不够用, 服务器内存 16G 占到了 9G而且还一直在上升, 优化后平均服务器内存占用1-2G, 我的定时任务每分钟都有任务执行, 由于服务器配置够了就没有进一步优化了
还有就是耗时的任务队列务必控制好超时时间, 不然也会比较占内存

2年前 评论
JerryBool (楼主) 2年前
王小大 (作者) 2年前
sanders

基本上可以断定是那几个整点执行的任务导致的,可以在那几个任务里写日志输出一下 memory_get_usage()

2年前 评论

包括不限于:xdebug,经验判断,人脑执行代码。代码也不给,业务又不说,用了什么库又不提,上来就分析内存泄漏,泄露就加内存喽

2年前 评论
JerryBool (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!