Как закончить child_process на nodejs?
Итак, у меня есть служба, созданная в узле, работающем на Kubernetes, и мне нужно выполнять очень тяжелую операцию каждые 30 минут (CRON JOB). Это набор операций с базой данных для каждого клиента в моем приложении (в настоящее время 5 клиентов).
Дело в том, что если я запускаю все, даже асинхронно, в одном и том же процессе, служба переходит в слишком большую нагрузку и дает сбой.
Из-за этого я попытался использовать модуль child_process. Моя идея заключалась в том, чтобы создать новый процесс для каждого клиента, делать то, что ему нужно, а затем убить процесс.
Я использую child_process.fork('heavyLoadFile') для создания дочернего процесса.
Дело в том, что когда работа сделана, КП не разрушаются. Они остаются там как "зомби", абсолютно ничего не делая.
Я пытался process.kill() на CP, но он также убивает родительский процесс.
Как убить только child_process? О, и вы, ребята, думаете, как лучше справиться с такими тяжелыми грузами?
1 ответ
Бег process.kill()
убьет ваше основное приложение NodeJS и всех его дочерних элементов.
Вам нужно только убить дочерний процесс. вот так:
const cp = require("child_process");
// you fork a child (your cron script)
const child = cp.fork("<your program>");
// the rest of your code
// you kill only this child
child.kill();