【问题标题】:Apache Storm - LocalCluster stopped logging but java process still runningApache Storm - LocalCluster 停止记录,但 java 进程仍在运行
【发布时间】:2018-11-23 06:36:47
【问题描述】:

我们将 Apache Storm 的 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 Heap 问题,这些问题可以通过增加 Xms、Xmx 和使用 MarkSweepGC 来解决。

但是,我们遇到了新问题。一段时间后不会写入 spout 日志。不会有任何与风暴相关的异常/错误的痕迹。

主要问题是 java 进程,即通过 nohup 仍然显示在 ps -ef 中。会发生什么问题?

【问题讨论】:

    标签: java apache-storm nohup


    【解决方案1】:

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

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

    顺便说一句,如果您正在这样做,请不要在生产中使用 LocalCluster。它用于测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-13
      • 2016-11-18
      • 1970-01-01
      • 2013-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多