localcluster停止了日志记录,但java进程仍在运行

z3yyvxxp  于 2021-06-24  发布在  Storm
关注(0)|答案(1)|浏览(328)

我们将apachestorm的localcluster作为java进程运行,即通过nohup运行。
我们正在使用以下配置运行一个简单的拓扑。

Config config = new Config();
config.setMessageTimeoutSecs(120);
config.setNumWorkers(1);
config.setDebug(false);
config.setMaxSpoutPending(1);

我们正在将拓扑提交到localcluster。我们的关闭钩子是跨源找到的默认钩子。

Runtime.getRuntime().addShutdownHook(new Thread() {
            @Override
            public void run() {
                cluster.killTopology(TOPOLOGY_NAME);
                cluster.shutdown();
            }
        });

最近我们遇到了java堆问题,通过增加xms、xmx和使用marksweepgc可能已经解决了这些问题。
然而,我们遇到了新的问题。过了一段时间喷口日志就不会被写入了。不会有任何风暴相关异常/错误的痕迹。
主要的问题是java进程,即通过nohup仍然出现在 ps -ef . 会发生什么问题?

vcudknz3

vcudknz31#

您可以尝试使用启用调试日志记录 config.setDebug(true); ,这可能让你知道发生了什么。
另外,下次拓扑挂起时,您应该能够通过使用 jstack 或者向java进程发送sigquit( kill -3 ). 这将导致进程为jvm中的每个线程转储堆栈跟踪,这应该可以让您找出它挂起的原因。
作为一种旁白,如果您正在这样做,请不要在生产中使用localcluster。它是用来测试的。

相关问题