跳至正文

在基于Docker的Node.js应用中出现内存不足的问题

问题

  • 在运行基于docker的node.js应用时,服务器在运行过程中出现了“内存不足”的问题。
  • Node.js的v8引擎默认限制了堆内存的大小。 以下是堆内存限制的容量:
    • v12以下:1.35GB
    • v14以下:2GB
    • v14以上:4GB
  • 由于不了解这些内存限制,应用程序持续使用内存,导致服务崩溃。
  • 该服务的实例具有12GB的内存,并且在内存使用较多时使用了4GB,剩余空间超过7GB。
  • 由于没有正确理解服务的结构,导致内存浪费,服务的可用性降低。

解决方法

  • 在运行node时,使用node --max-old-space-size=8192 start.js命令,并添加--max-old-space-size选项。
  • 在docker中,使用NODE_OPTIONS=--max-old-space-size=8192命令添加环境变量。
  • 通过添加上述选项,可以增加程序的最大堆大小,从而提高服务的可用性。