When I ran load test against lb4 backed application, i got flooded with the above warnings and observed the lb4 application slow down significantly (4x slower than normal with very poor throughput). However, the application didn't crash.
It looks like too many interceptors need to watch the event loop? It can be reproduce with one of the lb4 example:
lb4 example greeting-app
cd loopback4-example-greeting-app
npm start // with --trace-warnings
Use a load test application against http://127.0.0.1:3000/greet/world. Example:
autocannon -c 10 -d 40 -p 10 localhost:3000/greet/world
(node:30929) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 bind listeners added to [RestServer]. Use emitter.setMaxListeners() to increase limit
at _addListener (events.js:268:17)
at RestServer.addListener (events.js:284:10)
at RequestContext.addParentEventListener (/home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/context.js:152:22)
at RequestContext.setupEventHandlersIfNeeded (/home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/context.js:113:14)
at RequestContext.subscribe (/home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/context.js:414:14)
at ContextView.open (/home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/context-view.js:46:43)
at Object.createViewGetter (/home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/context-view.js:171:10)
at Object.resolve (/home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/core/dist/extension-point.js:58:26)
at /home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/resolver.js:102:30
at /home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/resolution-session.js:92:53
at Object.tryWithFinally (/home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/value-promise.js:157:18)
at Function.runWithInjection (/home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/resolution-session.js:92:32)
at resolve (/home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/resolver.js:99:61)
at /home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/resolver.js:176:16
at Object.resolveList (/home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/value-promise.js:130:32)
at resolveInjectedArguments (/home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/resolver.js:159:28)
Thanks for looking into this.
When I ran load test against lb4 backed application, i got flooded with the above warnings and observed the lb4 application slow down significantly (4x slower than normal with very poor throughput). However, the application didn't crash.
It looks like too many interceptors need to watch the event loop? It can be reproduce with one of the lb4 example:
lb4 example greeting-app
cd loopback4-example-greeting-app
npm start // with --trace-warnings
Use a load test application against http://127.0.0.1:3000/greet/world. Example:
autocannon -c 10 -d 40 -p 10 localhost:3000/greet/world
(node:30929) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 bind listeners added to [RestServer]. Use emitter.setMaxListeners() to increase limit
at _addListener (events.js:268:17)
at RestServer.addListener (events.js:284:10)
at RequestContext.addParentEventListener (/home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/context.js:152:22)
at RequestContext.setupEventHandlersIfNeeded (/home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/context.js:113:14)
at RequestContext.subscribe (/home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/context.js:414:14)
at ContextView.open (/home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/context-view.js:46:43)
at Object.createViewGetter (/home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/context-view.js:171:10)
at Object.resolve (/home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/core/dist/extension-point.js:58:26)
at /home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/resolver.js:102:30
at /home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/resolution-session.js:92:53
at Object.tryWithFinally (/home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/value-promise.js:157:18)
at Function.runWithInjection (/home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/resolution-session.js:92:32)
at resolve (/home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/resolver.js:99:61)
at /home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/resolver.js:176:16
at Object.resolveList (/home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/value-promise.js:130:32)
at resolveInjectedArguments (/home/ec2-user/projects/loopback/loopback4-example-greeting-app/node_modules/@loopback/context/dist/resolver.js:159:28)
Thanks for looking into this.