定时任务服务器,报错 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

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
sanders
最佳答案

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

3年前 评论
讨论数量: 11

php.ini 最大内存设置一下

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

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

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

php内存改成256M试试

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

3年前 评论

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

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

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

3年前 评论

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

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

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