我们的 Production Nuxt3 应用程序遇到问题。它在 ubuntu VPS 上的 PM2(集群模式) 上运行。 内存使用量随着时间的推移不断增长。
在本地运行时(Node 和 PM2 安装在 Windows 或 Mac 上),压力测试确实会填满内存,但 最终垃圾收集似乎会完成其工作:
在 ubuntu 上运行时,内存使用量保持不变。 PM2 monit(生产服务器、Ubuntu 22.04.4 LTS、节点 v20.14.0、PM2 5.4.0)正常运行 17 小时后:
因此,我们必须每隔几天重新启动 PM2。 我尝试对 Node 使用 --optimize_for_size 。这减少了总体内存使用量,但没有增加。
我在使用 WSL 的 Windows PC 上重现了此行为。压力测试后,内存使用率仍然很高。所以罪魁祸首一定与 Ubuntu 有关。 有什么想法吗? 🤔
您的应用程序中的某个地方可能存在内存泄漏。检查您是否没有做一些无法在服务器端进行垃圾收集的事情,例如错误使用插件(请参阅第二篇文章)、创建未清理的间隔等。
以下是一些可能有帮助的文章: