任务调度导致cpu占用过高

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

9.52.16

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

PHP 版本:8.0

3). 当前系统

centos7.9
cpu:6核
内存:16G

4). 业务环境

生产环境
无负载均衡

2. 问题描述?

任务调度导致cpu占用过高,虽然有两个站点,但是实际上只有总共只有五个任务,而且还是错开执行的(两分钟一次,半小时一次的,一个月一次的)。
但是我看基本上每分钟都会去执行这个 command,占用突然爆满,可能也就几秒钟的时间
对于任务也是有加 withoutOverlapping 避免任务重复,但是实际上业务场景任务一般两分钟左右就能执行完,任务基本上不会有重复

任务调度导致cpu占用过高

3. 您期望得到的结果?

请问各位有遇到过相关问题嘛,有没有什么解决方案

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 48

首先不确定是不是laravel bug 所致,其次定时任务框架一大堆。
webman workerman crontab ,安装一下laravel eloquent 业务都不需要改变。www.workerman.net/doc/webman/compo...
Hyperf Swoole, 连接池本身使用的laravel eloquent, 也是不需要改变业务。
https://hyperf.wiki/3.0/#/zh-cn/crontab?id=%e5%ae%9a%e6%97%b6%e4%bb%bb%e5%8a%a1

所以你在纠结什么呢?要不就追踪下laravel 任务调度的原理,看看能否找到原因。

第三方框架性能更好,我看你这种调用我都觉得打脑壳。
每次fork一个进程去运行,然后这个进程就退出了,看着就觉得性能差。
每次都要加载laravel console/kernel到内存,定时任务换别的框架来做吧!(其它框架常驻内存,不用你每次fork进程,会一直常驻,只会每次运行你的业务)

1年前 评论
GeorgeKing 1年前
meows (作者) 1年前
haircutlj 1年前

加下调试看看,比如时间。另外 PHP 日志,数据库日志也观察看看。

1年前 评论
Ancient (楼主) 1年前
徵羽宫 1年前

我搞得贼复杂, 用广播发送消息到本地处理了。

1年前 评论
Ancient (楼主) 1年前
徵羽宫 (作者) 1年前
Ancient (楼主) 1年前
徵羽宫 (作者) 1年前

我得也是

1年前 评论
❤seven (作者) 1年前
Ancient (楼主) 1年前

CPU负载高,具体要看业务,你的业务代码不贴出来或者业务处理流程逻辑不讲清除,没办法帮你分析问题。

1年前 评论
Ancient (楼主) 1年前

同样的问题飘过,就是执行这个脚本的一瞬间那cpu上去了

1年前 评论
Ancient (楼主) 1年前
meows 1年前

我以为只有我有这个问题,laravel10也是,测试的空任务,执行的时候cpu爆满,后经过测试是任务调度用command命令才会如此,还不知道如何解决

1年前 评论

手动执行command命令也会cpu突然升高,任务调度只要不使用command就正常,整个程序只要有php artist 命令就会cpu升高,求大神解答!

1年前 评论
Ancient (楼主) 1年前
haircutlj (作者) 1年前
❤seven 1年前

2核4G的每秒中去執行平均1-2次 command命令 平均最最高好像也才55%

1年前 评论
haircutlj 1年前
cccdz (作者) 1年前

想看看你任务调度中的代码

1年前 评论
Ancient (楼主) 1年前

如果是没有任何调度任务的话,CPU 占用还那么高,可能是框架初始化的过程中有一些其他逻辑,例如是否在 ServiceProvider 中为 Web 服务查询全局数据这种操作。

为了更好的验证是否是框架问题,建议可以创建一个新的项目,什么都不做,直接运行 php artisan schedule:run 看下 CPU 占用率!

如果依然排查不出问题,可以开启 xdebug 的 profiling,导出 profiling 文件,然后用可视化工具分析性能问题!

1年前 评论
haircutlj 1年前
GeorgeKing (作者) 1年前
GeorgeKing (作者) 1年前
haircutlj 1年前
haircutlj 1年前
GeorgeKing (作者) 1年前
cccdz 1年前
haircutlj 1年前

拿台服务器出来单独跑任务吧

1年前 评论
haircutlj 1年前
MR_NOBODY (作者) 1年前

Laravel

@haircutlj

1年前 评论
haircutlj 1年前
meows 1年前
GeorgeKing (作者) 1年前

我在 mac 也遇到过一次,大致是更新了 php 然后 cpu 的进程很多,导致cpu温度 90 度,一直降不下来。我无意查了下进程,发现 php 进程数很多,关闭全部php进程,重新启动电脑,解决。

1年前 评论

使用swoole,cpu立马就降下去了

9个月前 评论

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