同一台服务器多个laravel 的web项目怎么错峰执行任务调度?
情况是这样
有一台服务器上有多个laravel
项目, 这个数量可能为 n,当我们部署项目的时候,会在服务器中添加 cron 入口 ,大概是这个样子
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
所以 我现在 corn 的情况
问题来了
这些项目假设每五分钟会执行一个比较耗资源的任务,就会出现在这一时刻,所有的项目会启多个php进程,然后这个时候cpu,内存就飙红了,请问怎么把这些项目错开执行,合理利用服务器资源,因为大部分情况 cpu占用个位数,是这个样子的:
理想状态
在不合并项目,不更改任务调度时间频率(每五分钟),不更改业务处理逻辑的情况,怎么错开任务调度时间,修改 laravel 项目代码,比如:
如果你每个项目的定时任务耗时很短,那么错开时间是可以的,在命令前面加个 sleep xx 就行了。
不过这种也只是缓兵之计,多搞几台服务器才是从根本上解决问题!