在SchedulerX中,如果机器繁忙这边不会自动转移到健康的机器吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在SchedulerX中,当机器繁忙时,默认情况下不会自动将任务转移到健康的机器上执行。以下是详细说明和相关配置的解释:
SchedulerX默认不会向状态为“繁忙”的机器下发任务。
- 繁忙状态的判断依据: - CPU负载(load5):近5分钟的平均负载不能超过客户端机器的CPU可用核数。 - 内存使用率:近5分钟的平均内存使用率不能超过设定的阈值(默认90%)。 - 磁盘使用率:磁盘使用率不能超过设定的阈值(默认95%)。 - 如果所有机器都处于“繁忙”状态,则可能导致任务下发失败。
如果需要在机器繁忙时仍然触发任务执行,可以通过以下方式修改配置: - 在应用管理页面,选择目标应用分组,单击编辑 > 实例繁忙配置。 - 将是否触发繁忙机器开关设置为关闭。
注意:此操作会强制向繁忙机器下发任务,可能会对系统性能造成影响,请谨慎使用。
对于容器(K8s)部署的应用,如果发现CPU使用率采集不准确,可能会影响繁忙状态的判断。此时需要手动开启cgroup指标统计,并配置相关参数: - spring.schedulerx2.enableCgroupMetrics
:设置为true
以启用cgroup统计。 - spring.schedulerx2.cgroupPathPrefix
:指定容器内cgroup的路径,默认为/sys/fs/cgroup/cpu/
。
为了避免因所有机器繁忙导致任务无法下发,建议配置无可用机器报警: - 在任务管理页面,启用无可用机器报警功能。 - 当检测到无健康机器可用时,系统会通过配置的通知渠道(如短信、邮件、Webhook等)发送告警信息。
SchedulerX默认不会将任务分配到繁忙机器上,但可以通过修改配置强制触发。此外,建议结合报警机制和系统优化措施,确保任务调度的稳定性和高效性。