Solved
Node.jsのEventEmitterでメモリリークが起きていると警告が出た
Taro · 7/5/2026 · 66 views
MaxListenersExceededWarningという警告が出るようになりました。何が原因で、どう対処すればいいですか?
Taro · 7/5/2026 · 66 views
MaxListenersExceededWarningという警告が出るようになりました。何が原因で、どう対処すればいいですか?
この警告は、同じEventEmitterインスタンスに対してリスナー(.on()で登録したコールバック)が既定の上限(デフォルト10個)を超えて登録されたときに出るものです。多くの場合、リクエストのたびにリスナーを追加しているのに、対応する解除(.off()やremoveListener())を忘れている、というのが根本原因です。
ありがちなパターンとして、リクエストごとに何らかの共有オブジェクト(DBコネクションやWebSocketなど)に対してon('data', ...)のようなリスナーを登録しているが、リクエストが終わった後にリスナーを外していない、というケースがあります。これが積み重なるとメモリリークにつながり、警告が出ます。
対処法は次の通りです。
まずは1番のリスナー解除漏れを疑って調査してみることをおすすめします。
✓ This question has been solved