版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/a000575de7ae
storm supervisor.out日志中有报错:
supervisor [INFO] Shutting down and clearing state for id ae1ad586-ce5c-459a-8f32-30410683b4d6. Current supervisor time: 1408166828. State: :timed-out, Heartbeat:
对于一个worker的重启,一般来说基本为三种情况:
1、代码异常,一般打印出的日志会有较为明确的体现;
2、JVM内存溢出,由于进程重启,没有保留当时进程的堆内存使用率情况;
3、worker本身无异常,supervisor主动重启worker。
对于第三种情况,从日志中可以看到, 是因为timeout超时导致。
推测:
1、worker重启且连续出现在同一个节点上,因此认为该节点本身问题的可能性大一点。
2、supervisor和worker本身都在同一节点,当supervisor检测不到worker的心跳,会将其shutdown,而由于心跳文件是在本地,因此是与网络无关的。
3、更大的可能性是本机当时的负载比较高,该节点上有30+个worker进程,在12:48分前后节点负载从小于1陡然增大到6.44(当然这个值不算很高),负载突然变大可能导致worker无法及时更新心跳文件,导致supervisor判定其timeout,重启了worker。
方案:
1、白天看了cpu和内存的监控日志,因为是每隔5分钟打印出的瞬时值,不能很好反应资源的波动情况,得出了资源较为空闲的结论,明天看一下确定当时资源波动到底如何。
2、加大supervisor和worker之间的心跳时间,在storm.yaml中设置supervisor.worker.timeout.secs,这个明天看一下是否需要进行调整。
网友评论