如何防止 Node.js API REST 应用程序对高 CPU/RAM 使用率无响应?

Posted

技术标签:

【中文标题】如何防止 Node.js API REST 应用程序对高 CPU/RAM 使用率无响应?【英文标题】:How to prevent a Node.js API REST app to be unresponsive on high CPU/RAM usage? 【发布时间】:2021-08-06 18:52:42 【问题描述】:

我正在构建一个 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 使用率,从而使应用程序不会无响应?也许使用节流方法?

【问题讨论】:

【参考方案1】:

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

【讨论】:

这是我的第一个想法,但此应用程序是一种内部部署类型,我想确保在考虑扩大规模之前我们以最有效的方式进行此操作

以上是关于如何防止 Node.js API REST 应用程序对高 CPU/RAM 使用率无响应?的主要内容,如果未能解决你的问题,请参考以下文章

使用 OAuth 和 Node.JS 对 JIRA REST API 进行身份验证

检查 Node.js REST API 上的资源所有权

编写 Node.js Rest API 的 10 个最佳实践

React.js 与 Node.js Rest API

保护我的 Node.js 应用程序的 REST API?

REST API - Android Studio、Node.js、Firebase