杀死风暴拓扑后资源清理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了杀死风暴拓扑后资源清理相关的知识,希望对你有一定的参考价值。

我们有一个风暴拓扑,它与MariaDB数据库交互。我们的螺栓实现了IRichBolt接口并覆盖了生命周期方法。我们在prepare方法中打开数据库连接,然后在cleanup方法中关闭它。 cleanup方法文档说:

当IBolt即将关闭时调用。没有保证会调用清理,因为主管在集群上杀死-9的工作进程。保证调用清理的一个上下文是在本地模式下运行Storm时导致拓扑被杀死的情况

并且kill -9命令会在不清理任何资源的情况下终止进程。因此我们得出这样的结论:在杀死拓扑时,不必调用cleanup方法并关闭数据库连接。

因此,继续我的问题,我们有一个用于拓扑部署的shell脚本,在执行时会以超时0杀死当前拓扑并部署新拓扑。我们在db级面临一个问题,即打开了许多连接,这给我们提示以前的连接没有关闭。 (在先前拓扑中打开的那个)。

我们的假设是否正确?增加超时是否会清理所有资源?

答案

不会。增加拓扑超时不会影响工作人员清理的时间。当你使用例如30秒超时,只关闭喷口并给出拓扑的其余部分30秒完成处理。

你想要的是增加Storm允许工人在强行杀死之前关闭的时间。 https://github.com/apache/storm/blob/b07413670fa62fec077c92cb78fc711c3bda820c/storm-server/src/main/java/org/apache/storm/DaemonConfig.java#L780选项允许您指定Storm在发送kill -9之前等待的时间。默认值为3秒。您需要在storm.yaml中设置此选项,在拓扑配置中设置它将无效。

以上是关于杀死风暴拓扑后资源清理的主要内容,如果未能解决你的问题,请参考以下文章

当我将拓扑提交给风暴时,我从“ lein”中得到一个错误]]

风暴,螺栓延迟和总延迟之间的巨大差异?

运行10天后,我的风暴拓扑失败了

风暴拓扑不起作用

Android阻止恢复活动

是否可以在 VisualVM 中分析 apache 风暴拓扑?