执行器没有被分配任何作业

1.场景描述
我们遇到了这样的场景,当发版后,本身5分钟一个调度就该到达了,该被执行了,观察日志发现并没有被执行,再去检查执行器的任务分配情况,发现几台执行器上都没有分配到作业。

2.问题追踪
这个问题的排查相对费时间,因为中途我做了测试环境的集群搭建,动了其中的一些点位,git仓库的代码也进行过回滚,这里简单回顾下我的追踪过程。
(1).我之前做集群的时候,动了环境变量,增加过一个 集群标识,然后又逐步排查确认已经还原;
(2).我怀疑是不是zk集群有问题,然后又对zk集群进行停止、重启等,中途还进行 version-2 文件夹的删除,删掉持久化内容;
(3).我怀疑是不是Executor有问题,之前做集群的时候也动过这里面的环境变量,又反反复复的排查;
(4).中途配合各种排查 ,又重新搭建过Console,重新弄了数据库等;
山重水复疑无路,柳暗花明又一村。
本来已经绝望了,感觉实在找不到问题所在了,重新搭建的也不行。
最后,忽然想到了一个点位,如果控制中心、数据库、zk都没有问题,那么问题只能是Executor。
为什么之前Executor都是运行的好好的,而这次发版就出问题了呢?
发版内容跟Executor运行有关系吗?有关系!我们的代码运行和Executor的运行是共用同一套JVM。
为了证明就是本次发版内容导致的问题,我做了一个测试,将之前的一个确定没有问题的版本的包,进行了发版,能够正常运行。

3.问题分析
根据追踪的情况,问题相对比较明朗了,就是我们的发版的内容导致的。
然后分析本次版本中到底是什么会影响到Executor的执行?我不能非常确定是那个内容跟Executor有着怎样的关系,但是我知道我这个版本哪个地方会有影响。
本次的版本,涉及到了对zk的操作,我引入了相关的jar包,之前在调试的时候也遇到了这样的情况,jar包冲突会导致本地调试项目都起不来。
本地进行了jar包冲突排除,代码仓库clear,重新编译等各种操作,最终就好了。
我用同样的办法,把jenkins服务器上的代码也进行了缓存清理,最终重新发版搞定了。
发版内容相关的jar包与Executor的运行有影响。

4.解决方案
(1).本地调试,确保正常运行,没有相关的jar包冲突,本地的Executor能正常运行;
(2).发版部署,确保服务器上的环境干净,就是我们要发版的内容,不引入杂项;
(3).如果本地调试正常,而发版后出现这个情况,可能需要清除服务器上的代码缓存,再次进行发版。

5.注意事项
这套分布式系统绝对依赖zk,并且Executor的ClassLoader先于我们的项目出现在jvm中,关于zk的相关操作,一定注意jar包的冲突。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值