【发布时间】:2017-06-29 17:18:31
【问题描述】:
我已经运行了大约 15 天的用 NodeJS 编写的服务器应用程序。然后突然〜4小时前,它崩溃并重新启动。感谢forever 脚本,我发现了以下错误:
(node:30317) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 completed listeners added. Use emitter.setMaxListeners() to increase limit
(node:30317) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 completed listeners added. Use emitter.setMaxListeners() to increase limit
FATAL ERROR: Committing semi space failed. Allocation failed - process out of memory
1: node::Abort() [MyServerApp]
2: 0x126264c [MyServerApp]
3: v8::Utils::ReportOOMFailure(char const*, bool) [MyServerApp]
4: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [MyServerApp]
5: v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [MyServerApp]
6: v8::internal::Heap::CollectGarbage(v8::internal::GarbageCollector, char const*, char const*, v8::GCCallbackFlags) [MyServerApp]
7: v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [MyServerApp]
8: v8::internal::Runtime_AllocateInTargetSpace(int, v8::internal::Object**, v8::internal::Isolate*) [MyServerApp]
9: 0xccdc6808506
(node:14681) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 completed listeners added. Use emitter.setMaxListeners() to increase limit
(node:14681) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 completed listeners added. Use emitter.setMaxListeners() to increase limit
这可能是什么错误?是不是因为我的物理服务器内存不足?
我的物理服务器是AWS t2 micro实例,内存压力在:78x/992MB左右
以下是我的服务器应用程序的信息,由htop 打印:
VIRT: 1181M
RES: 32816
SHR: 9452
CPU%: 0
MEM%: 3.3
谢谢
【问题讨论】:
-
这通常意味着您正在创建新对象而不取消引用旧对象。所以,垃圾收集器不会删除它们。遗憾的是,一些内存泄漏很难追踪。
标签: node.js amazon-web-services out-of-memory