在群集中运行时,如果发生错误,工作人员通常会死亡(JVM关闭)。它可能是由许多因素造成的,大多数时候它是一个挑战(风暴的最大困难?),找出导致崩溃的原因。
当然,风暴管理员会重新启动死亡工人,并且在风暴群集中活跃度非常好,工作人员崩溃仍然是一个混乱我们应该避免,因为它增加了开销,延迟(可能很长时间才发现工人死亡如果你没有设计你的拓扑结构以防止这种情况发生,那么数据就会丢失。
是否有一种简单的方法/工具/方法可以检查风暴工作者崩溃的时间和原因?它们没有在storm-ui中显示(而主管被显示),并且一切都需要手动监控(例如jstack + JVM opts),并且需要非常谨慎。
以下是可能发生的一些情况:
答案 0 :(得分:1)
风暴管理员通过超时重新启动日志。 你可以监控管理员日志,也可以监控你的bolt(元组)方法的性能。
至于内存泄漏,由于风暴主管确实杀死了-9工作者,堆转储可能会被破坏,所以我会使用工具来动态监视你的堆或杀死主管通过jmap产生堆转储。另外,尝试监控gc日志。
我仍然建议增加默认超时。