zeus调度工具启动慢(zeus_action数据量太大)

记一次由于zeus服务停止后,启动花半小时…

MasterContext 初始化

// MasterContext.java
public void init(int port){
	log.info("init begin");
	...
	master=new Master(this);
}

Master 初始化

费时间的部分 GroupManagerTool.buildGlobeGroupBean

  • 1、从zeus_action表 提取所有 action_id
  • 2、将action_id中的依赖关系在内存模型中关联起来,构建依赖关系的网状结构
// Master.java
public Master(final MasterContext context) {
	this.context = context;
	GroupBean root = context.getGroupManager().getGlobeGroupBean(); // << 进入下面 GroupManagerTool.buildGlobeGroupBean >>
	...
	Map<String, JobBean> allJobBeans = root.getAllSubJobBeans();
	for (String id : allJobBeans.keySet()) {
		context.getDispatcher().addController(
				new JobController(context, this, id));
	}
	context.getDispatcher().forwardEvent(Events.Initialize);
	...
}

// GroupManagerTool.java
public static GroupBean buildGlobeGroupBean(GroupManager groupManager) {
	// step1. 从zeus_action表 提取所有 action_id
	GroupBean root=groupManager.getDownstreamGroupBean(groupManager.getRootGroupId()); // << 进入下面 MysqlGroupManager.getDownstreamGroupBean.getChildrenGroup >>
	Map<String, JobBean> allJobBeans=root.getAllSubJobBeans();
	
	// step2. 将action_id中的依赖关系在内存模型中关联起来,构建依赖关系的网状结构
	for(JobBean j1:allJobBeans.values()){
		if(j1.getJobDescriptor().getScheduleType()==JobScheduleType.Dependent){
			for(String depId:j1.getJobDescriptor().getDependencies()){
				try{
					JobBean depJob=allJobBeans.get(depId);
					j1.addDependee(depJob);
					depJob.addDepender(j1);
				}catch(Exception e){
					log.error("the jobid is " + j1.getJobDescriptor().getId() + ", the depId is " + depId, e);
				}
			}
		}
	}
	return root;
}

// MysqlGroupManager.java
public List<GroupDescriptor> getChildrenGroup(String groupId) {
	// << 从zeus_action表里 获取每个group下的action_id >>
	List<GroupPersistence> list = getHibernateTemplate().find(
			"from com.taobao.zeus.store.mysql.persistence.GroupPersistence where parent="
					+ groupId);
	...
	return result;
}

删除zeus_action历史数据解决问题
感谢提供帮助…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值