您的位置:首页 > 其它

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

2017-12-27 00:00 99 查看
摘要: 本节作者尽可能将多年来使用TBS遇到的所有问题作记录并解答。如果这里仍不能够解决读者朋友的问题,可以加入官方tbs技术讨论群(89558542)或关注官方tbs微信公众号:tbschedule

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行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息