@zuart
... уже и не знаю, нуп, похоже ...

Как перечитать JSON-файл процессов PM2 без пересоздания?

Приветствую.

Существует служебный процесс, написанный на NodeJS. По сути он один и тот же, просто запускается несколько копий с разными входными конфигами. Для того, чтобы было удобно управлять и визуально и технически группой настроек, подключается к pm2 это добро с помощью JSON-файла [ srv-pm2.json ] следующего вида:

{
	"apps": [
		{
			"exec_mode": "fork_mode",
			"script": "service.js",
			"name": "service.1",
			"args": "--config config1.json",
			"env": { "NODE_ENV": "production" },
			"max_memory_restart": "150M"
		},
		{
			"exec_mode": "fork_mode",
			"script": "service.js",
			"name": "service.2",
			"args": "--config config2.json",
			"env": { "NODE_ENV": "production" },
			"max_memory_restart": "150M"
		},
		{
			"exec_mode": "fork_mode",
			"script": "service.js",
			"name": "service.3",
			"args": "--config config3.json",
			"env": { "NODE_ENV": "production" },
			"max_memory_restart": "150M"
		}
	]
}


Соответственно подключение этого конфига в pm2 выполняется командой:
> pm2 start srv-pm2.json

Но вот когда нужно добавить (а иногда и удалить) блок сервиса, то приходится действовать как-то не очень красиво:
> pm2 delete srv-pm2.json
> вносить изменения в JSON
> pm2 start srv-pm2.json
> pm2 save

Получается мало того, что замена идентификаторов задач в pm2, так еще и кратковременное отключение сервисов. Так вот вопрос состоит в следующем. МОЖНО ЛИ? как-то перечитать JSON для pm2 так, чтобы он автоматически удалил из своих задач то, что убрано из "конфига" и запустил то, что добавилось без остановки всего остального? Ну что-то типа:
> pm2 reload srv-pm2.json
  • Вопрос задан
  • 684 просмотра
Решения вопроса 1
AlexMcArrow
@AlexMcArrow
Люблю РНР, да я такой!
Простите за прямоту.
А что мешает разбить этот файл на 3 блока и запустить те что нужно, останавливать или перезагружать те что нужно, добавлять или удалять - то что нужно.
Да, вам придется много раз обращаться к pm2 что бы тот запустил каждый сервер - но зато вы получите нужную вам гибкость.

Ну или почитать документацию: (pm2.keymetrics.io/docs/usage/application-declarati...
Act on a specific process
You can also act on a particular application by using its name and the option --only :
pm2 start ecosystem.config.js --only api-app
pm2 restart ecosystem.config.js --only api-app
pm2 reload ecosystem.config.js --only api-app
pm2 delete ecosystem.config.js --only api-app
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы