Apache Storm - LocalCluster прекратил регистрацию, но процесс Java все еще работает - PullRequest
0 голосов
/ 23 ноября 2018

Мы запускаем LocalCluster Apache Storm как процесс 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.

Однако мысталкиваемся с новой проблемой.Журналы носика не пишутся через некоторое время.Там не будет никаких следов бурильных исключений / ошибок.

Основная проблема - процесс java, т.е. через nohup он все еще отображается в ps -ef.Какая проблема будет происходить?

1 Ответ

0 голосов
/ 23 ноября 2018

Вы можете попробовать включить ведение журнала отладки с помощью config.setDebug(true);, что может позволить вам сказать, что происходит.

Также в следующий раз, когда ваша топология зависнет, вы сможете узнать, что она делает, используя jstack или отправив процессу Java SIGQUIT (kill -3).Это приведет к тому, что процесс выгрузит трассировки стека для каждого потока в JVM, что должно позволить вам выяснить, почему он зависает.

В качестве отдельного случая, если вы делаете это, пожалуйста, не используйте LocalCluster впроизводство.Он предназначен для тестирования.

...