Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 内存泄漏的节点JS_Node.js_Express_Out Of Memory_Amazon Ecs - Fatal编程技术网

Node.js 内存泄漏的节点JS

Node.js 内存泄漏的节点JS,node.js,express,out-of-memory,amazon-ecs,Node.js,Express,Out Of Memory,Amazon Ecs,我不熟悉节点JS。我有一个Node JS+Express应用程序,它导致一个Docker容器重复停止,退出代码137-每5-10分钟出现一次内存不足错误 该应用程序提供静态html、css、js和图像,再简单不过了 const express = require('express') const app = express() const port = 8080 app.use(express.static('public')) app.get('/', (req, res) => {

我不熟悉
节点JS
。我有一个Node JS+Express应用程序,它导致一个
Docker容器
重复停止,退出代码137-每5-10分钟出现一次内存不足错误

该应用程序提供静态html、css、js和图像,再简单不过了

const express = require('express')
const app = express()
const port = 8080

app.use(express.static('public'))

app.get('/', (req, res) => {
  res.sendFile('index.html', { root: __dirname + "/public" } );
})

app.listen(port, () => {
  console.log(`web app listening at http://localhost:${port}`)
})
目录结构

--root
    server.js
    --public
        index.html
        --css
        --js
        --img
主机是一个
ECS EC2实例-T2小,内存为2Gb
。容器任务分配1024个MiB内存

Dockerfile

# from nodes 12 image 
FROM node:12
MAINTAINER coco


# Create app directory
WORKDIR /usr/src/app


# Install app dependencies
COPY package*.json ./


RUN npm install


# Bundle app source - copy all files/folders in current directory
COPY . .


# Specify ports
EXPOSE 8080


# Run the app
CMD [ "node", "server.js" ]
这个节点应用程序会导致内存泄漏吗?不过,可能是这样。我正在使用
express 4.17.1


似乎该应用程序的任何内容都不太可能导致内存泄漏。很可能你的应用程序只是试图使用比你分配的内存更多的内存。nodejs服务器实例并不小。泄漏是指随着时间的推移逐渐增大的情况。内存使用和内存泄漏不是一回事。我建议暂时为服务器分配更多内存(这样它就不会停止),然后观察其内存使用情况。您使用的是什么docker映像?@LawrenceRone FROM node:12@jfriend00你有什么建议?我似乎找不到任何关于节点服务器应该有多大的指导。如果你能给我指一些有关这方面的资料,我将不胜感激。还有,它将如何使用这么多的内存。这些相同的html和资产文件在带有512KB的Tomcat中工作,并且从未在内存中运行过。也许
Node
Express
存在漏洞?您是否知道主机操作系统使用的资源可能比ubuntu多256mb左右,那么您有一个docker映像,正如您所说的Node:12,即运行debian的12.18.3-stretch,它有自己的操作系统基本ram使用量,可能在256mb左右。。然后在你运行任何东西之前,你就拥有了所有的缓存。检查
top
,然后检查容器的使用情况
docker stats e164718fe583
等。。如果您的ram卡在add交换上,至少容器不会崩溃