node.js - 如何防止 Node.js API REST 应用程序对高 CPU/RAM 使用率无响应?
问题描述
我正在构建一个 Node.js + Express API REST 应用程序。只要 CPU 和 RAM 使用率处于正常水平,但最新设计的端点之一占用了过多的 RAM 和 CPU:
我说的是一个 API,其目标是使用模板数据实时生成 .pdf 文件(我们正在使用库 pdf-puppeteer)。但是,当这个 API 的任务是生成数百个 .pdf 文件时,Node.js 应用程序会无响应,我们无法调用其他 API,因为它们会给出超时错误或响应时间过长,即使是更简单的 API 也是如此。
我正在使用 pm2 进行负载平衡,我们尝试将 pdf 创建过程委托给工作进程,这样事件循环就不会被阻塞。它在某种程度上是成功的,但 CPU 和 RAM 消耗仍然很高,并且 API 开始变得无响应。
那么如何在繁重的进程中防止这种高 CPU 和 RAM 使用率,从而使应用程序不会无响应呢?也许使用节流方法?
解决方案
您可以使用 Docker/Kubernetes 堆栈。并扩大您的环境。