node.js - 如何在nodejs上完成child_process?
问题描述
所以,我有一个在 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();
推荐阅读
- javascript - ReactJS:React-Select 调用 api 并过滤结果
- javascript - 使用三元运算符有条件地渲染数组方法
- python - 从带有水平线的 .txt 文件中提取相交值
- javascript - jQuery Textillate 选项未创建预期结果
- azure - 如何使用 filebeat azure 模块将日志重定向到不同的 kibana 空间?
- html - 如何对齐同一行中的两个标题?
- google-analytics-api - 随机“用户对此配置文件没有足够的权限。” 来自 Google Analytics API v3 的错误
- mysql - 奇怪的 MySQL JOIN,我想包含匹配项并且没有来自连接的匹配项
- cmake - 如何将 PUBLIC_HEADER 设置为文件列表?
- python - 返回对 PyO3 中成员字段的引用