Skip to content
This repository was archived by the owner on Sep 2, 2024. It is now read-only.
This repository was archived by the owner on Sep 2, 2024. It is now read-only.

Memory leak? #5

@davisjam

Description

@davisjam

I started the server:

NODE_ENV=production node node_modules/xclap/bin/clap.js server
...
Hapi.js server running at http://woody:3000

and a client (8 cores in a multiprocessing.Pool, each with an eventlet pool of size 20):

./runspec.py -f config-ssr.json  --nCoresToUse 0
Using seed None
[27-04-2018 14:41:57] Parsing arguments.
Input options config files: config-ssr.json
runMode requests
Starting Node-DC-SSR-electrode v0.8.0 in SSR-electrode Mode
[27-04-2018 14:41:57] Building list of Urls done.
[27-04-2018 14:41:57] Creating temporary log file
[27-04-2018 14:41:57] Starting request based run.
[27-04-2018 14:41:57] Requests:[500], Concurrency:[20]
Creating MP pool
Submitting 8 jobs to pool
Worker: args {'nSteadyState': 62, 'nRampDown': 12, 'nRampUp': 12, 'concurrency': 20, 'logFile': 'RTdata-0'}
Creating eventlet pool
Worker: args {'nSteadyState': 62, 'nRampDown': 12, 'nRampUp': 12, 'concurrency': 20, 'logFile': 'RTdata-1'}
Creating eventlet pool
Worker: args {'nSteadyState': 62, 'nRampDown': 12, 'nRampUp': 12, 'concurrency': 20, 'logFile': 'RTdata-2'}
Creating eventlet pool
Worker: args {'nSteadyState': 62, 'nRampDown': 12, 'nRampUp': 12, 'concurrency': 20, 'logFile': 'RTdata-3'}
Creating eventlet pool
Worker: args {'nSteadyState': 62, 'nRampDown': 12, 'nRampUp': 12, 'concurrency': 20, 'logFile': 'RTdata-4'}
Creating eventlet pool
Worker: args {'nSteadyState': 62, 'nRampDown': 12, 'nRampUp': 12, 'concurrency': 20, 'logFile': 'RTdata-5'}
Creating eventlet pool
Worker: args {'nSteadyState': 62, 'nRampDown': 12, 'nRampUp': 12, 'concurrency': 20, 'logFile': 'RTdata-6'}
Creating eventlet pool
Worker: args {'nSteadyState': 62, 'nRampDown': 12, 'nRampUp': 12, 'concurrency': 20, 'logFile': 'RTdata-7'}

The client has a total of 8 cores * 20 green threads / core == 160 requests active concurrently.
Although the server processes requests slowly, since the client is not unbridled the server's queues should not grow unbounded.

Nevertheless, the server eventually said:

<--- Last few GCs --->

[2846:0x3d43a10]  1410213 ms: Mark-sweep 1413.1 (1477.4) -> 1413.1 (1458.9) MB, 687.4 / 0.0 ms  (+ 0.0 ms in 0 steps since start of marking, biggest step 0.0 ms, walltime since start of marking 687 ms) last resort GC in old space requested
[2846:0x3d43a10]  1410899 ms: Mark-sweep 1413.1 (1458.9) -> 1413.1 (1458.9) MB, 686.0 / 0.0 ms  last resort GC in old space requested


<--- JS stacktrace --->

==== JS stack trace =========================================

Security context: 0x300d5325ee1 <JSObject>
    1: instantiateChildren [/home/jamie/Desktop/node-profiling/benchmarks/node-dc/Node-DC-SSR/Node-DC-SSR-electrode/.prod/modules/react-dom/lib/ReactChildReconciler.js:~46] [pc=0x3bbabdfd9dcc](this=0x20755c4fbd1 <Object map = 0x21986a941f49>,nestedChildNodes=0x36cc21773381 <JSArray[20]>)
    2: arguments adaptor frame: 3->1
    3: mountChildren [/home/jamie/Desktop/node-profiling/benchmarks/node-...

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
 1: node::Abort() [node]
 2: 0x121a7ac [node]
 3: v8::Utils::ReportOOMFailure(char const*, bool) [node]
 4: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [node]
 5: v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [node]
 6: v8::internal::Runtime_AllocateInTargetSpace(int, v8::internal::Object**, v8::internal::Isolate*) [node]
 7: 0x3bbabde8463d
Aborted (core dumped)
[14:45:57] >Failed Execute electrode/app-server as function (23.52 min)
[14:45:57] Done Process electrode/server serial array ["app-server"] (23.52 min)
 Execution Failed - Errors: 
 1  shell cmd 'node  lib/server/index.js' exit code 134

I interpret this as a memory leak in the server.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions