TritonDataCenter / node-manta-sync

Rsync style command for Joyent's Manta
31 stars 9 forks source link

Newer versions of node lead to high memory consumption #33

Open papertigers opened 5 years ago

papertigers commented 5 years ago

It seems node version 9.x.x will cause manta-sync to run itself out of memory and ultimately cause the process to abort. Version 4.8.x was tested and the same transfer was confirmed to complete successfully.

papertigers commented 5 years ago

This issue may be specific to node 9.x

The resulting crash looks like:

<--- Last few GCs --->
es[395692:1f9f010]    38780 ms: Mark-sweep 33.5 (74.0) -> 32.7 (75.0) MB, 4.1 / 0.0 ms  (+ 75.8 ms in 81 steps since start of marking, biggest step 2.3 ms, walltime since start of marking 81 ms) finalize incremental marking via task GC in old space requeste[395692:1f9f010]    41151 ms: Mark-sweep 36.3 (75.0) -> 33.3 (75.0) MB, 9.8 / 0.0 ms  (+ 91.9 ms in 22 steps since start of marking, biggest step 5.9 ms, walltime since
start of marking 119 ms) finalize incremental marking via stack guard GC in old space

<--- JS stacktrace --->
Cannot get stack trace in GC.
FATAL ERROR: NewArray Allocation failed - process out of memory
 1: node::Abort() [/opt/local/bin/node]
 2: node::OnFatalError(char const*, char const*) [/opt/local/bin/node]
 3: v8::Utils::ReportOOMFailure(char const*, bool) [/opt/local/bin/node]
 4: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [/opt/local/bin/node]
 5: v8::internal::FatalProcessOutOfMemory(char const*) [/opt/local/bin/node]
 6: void v8::internal::RememberedSet<(v8::internal::RememberedSetType)1>::Insert<(v8::internal::AccessMode)0>(v8::internal::MemoryChunk*, unsigned char*) [/opt/local/bin/node]
 7: void v8::internal::BodyDescriptorBase::IteratePointers<v8::internal::MarkCompactMarkingVisitor>(v8::internal::HeapObject*, int, int, v8::internal::MarkCompactMarkingVisitor*) [/opt/local/bin/node]
 8: v8::internal::MarkCompactCollector::EmptyMarkingWorklist() [/opt/local/bin/node]
 9: v8::internal::MarkCompactCollector::RootMarkingVisitor::VisitRootPointers(v8::internal::Root, v8::internal::Object**, v8::internal::Object**) [/opt/local/bin/node]
10: _ZN2v88internal4Heap18IterateStrongRootsEPNS0_11RootVisitorENS0_9VisitModeE [/opt/local/bin/node]
11: _ZN2v88internal20MarkCompactCollector9MarkRootsEPNS0_11RootVisitorEPNS0_13ObjectVisitorE [/opt/local/bin/node]
12: v8::internal::MarkCompactCollector::MarkLiveObjects() [/opt/local/bin/node]
13: v8::internal::MarkCompactCollector::CollectGarbage() [/opt/local/bin/node]
14: v8::internal::Heap::MarkCompact() [/opt/local/bin/node]
15: _ZN2v88internal4Heap24PerformGarbageCollectionENS0_16GarbageCollectorENS_15GCCallbackFlagsE [/opt/local/bin/node]
16: _ZN2v88internal4Heap14CollectGarbageENS0_15AllocationSpaceENS0_23GarbageCollectionReasonENS_15GCCallbackFlagsE [/opt/local/bin/node]
17: _ZN2v88internal4Heap26CollectAllAvailableGarbageENS0_23GarbageCollectionReasonE [/opt/local/bin/node]
18: v8::Isolate::LowMemoryNotification() [/opt/local/bin/node]
19: node::StreamListener::OnStreamAlloc(unsigned long) [/opt/local/bin/node]
20: node::TLSWrap::ClearOut() [/opt/local/bin/node]
21: node::TLSWrap::OnStreamRead(long, uv_buf_t const&) [/opt/local/bin/node]
22: node::LibuvStreamWrap::OnUvRead(long, uv_buf_t const*) [/opt/local/bin/node]
23: uv__read [/opt/local/bin/node]
24: uv__stream_io [/opt/local/bin/node]
25: uv__io_poll [/opt/local/bin/node]
26: uv_run [/opt/local/bin/node]
27: _ZN4node5StartEP9uv_loop_siPKPKciS5_ [/opt/local/bin/node]
28: node::Start(int, char**) [/opt/local/bin/node]
29: _start [/opt/local/bin/node]
Abort (core dumped)