Почему я вижу несколько запущенных экземпляров одной и той же службы (Elasticsearch) в Ubuntu, но отвечает только один?

Я запускаю Elasticsearch (ES) на небольшом компьютере с AWS Ubuntu и работаю над общей настройкой его производительности.

После недавнего развертывания с использованием Saltstack я заметил, что количество запущенных экземпляров увеличилось с двух до трех — после двух в течение нескольких месяцев. Увеличение количества экземпляров, по-видимому, соответствует увеличению использования памяти. введите здесь описание изображения

Я подтвердил с помощью ps, что на коробке запущены три java-процесса:

PID TTY          TIME CMD
9295 ?         00:02:08 java
14398 ?        00:00:12 java
26175 ?        00:40:48 java

Когда я останавливаю ES с помощью команды «sudo service elasticsearch stop», у меня по-прежнему остаются два процесса ES, работающие в соответствии с ps:

PID TTY          TIME CMD
9295 ?         00:02:08 java
26175 ?        00:40:48 java

Я перезапустил службу, а затем у меня снова было три. Это кажется мне очень странным, потому что казалось, что две службы не реагировали на команду остановки. (Может ли это быть так называемый процесс зомби или сирот?)

Я вручную убил все три процесса и перезапустил ES, и теперь у меня есть только один экземпляр ES. Я задавался вопросом, связаны ли эти своенравные Java-процессы с какой-то другой службой, но после уничтожения всех трех New Relic подтвердил значительное снижение использования памяти и процессов — так что все они определенно были процессами, связанными с ES:

введите здесь описание изображения

Мой вопрос: почему после развертывания количество запущенных экземпляров будет увеличиваться? Есть ли для этого функциональная причина Elasticsearch или это ошибка? Что может привести к тому, что Elasticsearch или любой другой сервис в Ubuntu перейдет в это состояние без ответа?

Любое понимание очень ценится!


person ninapavlich    schedule 23.07.2015    source источник
comment
Вы устанавливали что-нибудь, что может иметь встроенный Elasticsearch? Кибана, Логсташ, другие?   -  person Val    schedule 24.07.2015


Ответы (1)


Что вы получите, выполнив эту команду:

 lsof -i :9200-9399 | tail -n +2 | awk '{print $2}' | xargs ps -p

lsof -i :9200-9399 перечислит все открытые файлы в диапазоне портов 9200-9399, т. е. диапазоне портов по умолчанию, используемом ES. Измените диапазон, если ваша конфигурация отличается.

tail -n +2 удалит первую строку вывода из команды lsof, она содержит заголовки столбцов и бесполезна

awk '{print $2}' будет извлекать только идентификатор процесса (PID) из вывода lsof

Наконец, xargs ps -p запустит команду ps, чтобы узнать, какой процесс выполняется под PID, выбранным командой awk.

Вы должны получить вывод, как показано ниже, и это может помочь вам начать расследование.

  PID TTY           TIME CMD
21199 ttys011    4:39.26 /usr/bin/java -Xms256m -Xmx1g....
22234 ttys012    5:12.22 /usr/bin/java -Xms256m -Xmx1g....
23444 ttys013    3:33.54 /usr/bin/java -Xms256m -Xmx1g....
person Val    schedule 24.07.2015
comment
Привет @Val, я добавил вывод своих команд PS к вопросу выше. Как бы вы начали расследование отсюда? Я не знаком с этим материалом, поэтому я не совсем уверен, на что я смотрю! Спасибо за вашу помощь! - person ninapavlich; 24.07.2015
comment
Есть ли шанс получить полную командную строку вместо java в столбце CMD? Возможно, используя ps -p 9295? Также вы устанавливали что-нибудь, что может иметь встроенный Elasticsearch? Кибана, Логсташ, другие? - person Val; 26.07.2015
comment
Я добавлю более полный вывод, если смогу повторить это снова! - person ninapavlich; 29.07.2015
comment
Есть новости по этому поводу? - person Val; 18.04.2016
comment
Я не видел, чтобы это повторилось. Так странно! - person ninapavlich; 29.04.2016