TBSchedule应用实战(八)——常见问题速查手册

原创
2017/12/27 18:28
阅读数 2.2K
  • Q:为什么直接使用官方开源jar包会产生乱码日志?
    • A:官方开源版本默认为GBK编码,如果您的编码为UTF-8请下载resources自行转码后再次package使用。
  • Q:为什么我的控制台无法和应用对应?
    • A:请确保应用中配置Bean:TBScheduleManagerFactory时,其zkConfig中的zkConnectString和rootPath与控制台中Zookeeper连接配置中“Zookeeper地址”和“Zookeeper根目录”保持一致。

  • Q:为什么我的控制台一直显示“错误信息:Zookeeper connecting ......XXXXXXXXXXXXXXXXX”

    • A:首先请确保zookeeper集群可用,如确定zookeeper集群可用,那么上述问题解决方案有三:

      • 1、ScheduleConsole.war中使用的tbs版本过期,更新为最新版后重新打包部署;

      • 2、zookeeper集群服务器防火墙问题,关闭防火墙;

      • 3、目前控制台对新版zookeeper支持落后,先在控制台中配置需要的rootPath,保存并转到管理主页,确认正常后后再启动应用。

  • Q:为什么我的控制台一直显示“错误信息:Zookeeper connecting ......2000ms(4000ms,6000ms)”

    • A:zookeeper不可用

  • Q:为什么我在控制台变更了配置,程序却不起效果?

    • A:zookeeper操作失败,停止策略后,清理任务,开启策略;

    • B:若A不能解决,停止策略,人工删除掉zookeeper中rootPath下以策略命名的节点及其子节点(rmr命令)。

  • Q:为什么使用TBS的应用程序会时不时报出ZooKeeper有关的错误,有时甚至会导致任务不执行?

    • A:tbs为HA设计,请尽量避免使用singleton部署的ZooKeeper;

    • B:ZooKeeper的半数投票机制决定其必须由3、5、7,甚至更多实例来构建Cluster,而3机Cluster是最不可靠的一种,如果Master宕机虽然集群还能够正常提供服务,但此时Master会固定剩余两实例中的一个,无法再次进行选举。然而TBS源码有检查Leader即Master的逻辑存在,故而会引发异常甚至是调度服务的不可用。

  • Q:为什么我明明配置了单线程组最大任务项,但当任务项较多时实际分配的任务项会大于该配置?

    • A:详见resources中ScheduleUtil.java第91-96行代码,官方于2015年注释了任务项分配限制逻辑以保证任务项分配到所有线程组,从而导致该配置失效。

    • 如果您的应用场景确实需要限制任务项,可以使用作者基于官方3.3.3.2优化版本。或者以官方版92行到95行替换98行到102行。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部