首页 > 解决方案 > 如何防止 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 使用率,从而使应用程序不会无响应呢?也许使用节流方法?

标签: node.jsperformancepdf-generation

解决方案


您可以使用 Docker/Kubernetes 堆栈。并扩大您的环境。


推荐阅读