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交换上,至少容器不会崩溃