任务调度导致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. 您期望得到的结果?

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

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 47

首先不确定是不是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进程,会一直常驻,只会每次运行你的业务)

6个月前 评论
GeorgeKing 6个月前
meows (作者) 6个月前
haircutlj 6个月前

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

6个月前 评论
Ancient (楼主) 6个月前
徵羽宫 6个月前

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

6个月前 评论
Ancient (楼主) 6个月前
徵羽宫 (作者) 6个月前
Ancient (楼主) 6个月前
徵羽宫 (作者) 6个月前

我得也是

6个月前 评论
❤seven (作者) 6个月前
Ancient (楼主) 6个月前

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

6个月前 评论
Ancient (楼主) 6个月前

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

6个月前 评论
Ancient (楼主) 6个月前
meows 6个月前

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

6个月前 评论

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

6个月前 评论
Ancient (楼主) 6个月前
haircutlj (作者) 6个月前
❤seven 6个月前

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

6个月前 评论
haircutlj 6个月前
cccdz (作者) 6个月前

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

6个月前 评论
Ancient (楼主) 6个月前

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

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

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

6个月前 评论
haircutlj 6个月前
GeorgeKing (作者) 6个月前
GeorgeKing (作者) 6个月前
haircutlj 6个月前
haircutlj 6个月前
GeorgeKing (作者) 6个月前
cccdz 6个月前
haircutlj 6个月前

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

6个月前 评论
haircutlj 6个月前
MR_NOBODY (作者) 6个月前

Laravel

@haircutlj

6个月前 评论
haircutlj 6个月前
meows 6个月前
GeorgeKing (作者) 6个月前

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

6个月前 评论

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