问题描述
因此,我有一个在Kubernetes上运行的节点中提供的服务,我需要每30分钟进行一次非常繁重的操作(CRON JOB)。对于我的应用程序中的每个租户(目前有5个租户),这都是一堆数据库操作。
问题是,如果我在相同的进程上启动所有服务,即使是异步的,服务也将陷入过多的负载并崩溃。
因此,我尝试使用child_process模块。我的想法是为每个租户创建一个新流程,执行所需的操作,然后终止该流程。
我正在使用child_process.fork('heavyLoadFile')创建子进程。
问题在于,完成工作后,CP不会被销毁。他们像僵尸一样呆在那里,什么也不做。
我尝试在CP上使用process.kill(),但它也会杀死父进程。
我怎样才能只杀死child_process? 哦,你们是否想出一种更好的方法来处理这种沉重的负担?
解决方法
运行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();