目前业务上存在大量的 crontab 每分钟任务执行,现在是单个 pod 里面跑了很多个同类型任务的容器,最多的是 10 个任务在同一个 pod 里面,任务一跑起来,CPU 就告警了,已经做了资源限制,但还是撑不住 10 个一起跑起来。
当前想到的办法是,一个任务一个 pod,这样拆分出来,大概会有一百多个 pod,感觉资源也是占用比较多的。还有一个钟方法就是一个 pod 容器里面跑多条任务,顺序执行,如果这样,其中一个任务有问题就全挂了。
想请教下大佬们,还有什么更好的解决办法吗
1
laminux29 5 小时 56 分钟前
任务一跑起来,CPU 就告警了
=========================== 为什么任务跑起来 CPU 就要告警? CPU 运行负载时,CPU 使用率有增长,这难道不是正常现象? |
2
julyclyde 5 小时 37 分钟前
感觉是监控报警条件的设置有问题
你明知它会是锯齿状,但仍然选择了对尖峰情况进行报警 几个建议: 1 不要在整分钟启动任务,而是选择把多个任务加随机秒数延迟再开始运行 2 不要对尖峰情况进行报警,试试改为(超高+持续) 3 把定时任务单独搞一组机器运行,不要和日常负载混在一起 |
3
yinmin 5 小时 24 分钟前 via iPhone
#2 正解。
crontab 配置任务时,每分钟任务分别错峰设置为 0 秒启动、第 10 秒启动、第 20 秒启动… 对于其他的按小时、按天启动的任务,设一个随机分钟和秒数启动。例如:每天凌晨 1:00 运行的任务改成 1:06:29 启动运行。 |
4
QHKZ 5 小时 16 分钟前 via iPhone
任务多了就上队列,成熟的框架策略比 cron 多的多。
|
6
RadishWind 5 小时 11 分钟前
这种其实已经超出了 cron 的适用范围了, 可以考虑上分布式的定时任务调度
|