pid:2 nid:2 exception:setl:load miss data with keys:[MemoryPipeKey[identity=Identity[channelId=1,pipelineId=2,processId=4991953],time=1383190001987,dataType=DB_BATCH]]
7.2 处理方式
要理解该异常,需要先了解一下otter调度模型,里面SEDA中多个stage之间通过pipe进行数据交互,
比如T模块完成后会将数据存到pipe中,然后通知SEDA中心,中心会通知L模块起来工作,
L模块就会根据T传给中心的pipeKey去提取数据,而该异常就是当L模块根据pipeKey去提取数据时,发现数据没了。 主要原因:pipe在设计时,如果是单机传输时,会使用softReference来存储,
所以当jvm内存不足时就会被GC掉,所以就会出现无数据的情况.
ps. 如果miss data with keys异常非常多的时候,你就得考虑是否当前node已经超负载运行,内存不够,
需要将上面的部分同步任务迁移出去。如果是偶尔的异常,那可以忽略,该异常会有自动恢复RESTART同步任务的处理。
8.日志列表中出现manager异常
8.1 报错日志
1 2 3 4 5 6 7 8
pid:2 nid:null exception:channel:can't restart by no select live node //该异常代表pipelineId = 2,select模块的node没有可用的节点.
pid:-1 nid:null exception:nid:2 is dead and restart cids:[1,2] //该异常代表node id = 2,因为该node挂了,触发了channelId = 1 / 2的两个同步任务发起restart同步任务的操作. (一种failover的机制)