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