Apache Storm-LocalCluster停止记录,但Java进程仍在运行

时间:2018-11-23 06:36:48

标签: java apache-storm nohup

我们正在通过Java进程(即通过nohup)运行Apache Storm的LocalCluster。

我们正在运行具有以下配置的简单拓扑。

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中。会发生什么问题?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用config.setDebug(true);启用调试日志记录,这可能使您知道正在发生什么。

下次拓扑挂起时,您也应该能够通过使用jstack或向Java进程发送SIGQUIT(kill -3)来告诉它正在做什么。这将导致该进程为JVM中的每个线程转储堆栈跟踪,这应该让您找出其挂起的原因。

顺便提一下,请不要在生产中使用LocalCluster。用于测试。