Notes from when we were discussing memory leaks on the Vue.js jp Slack
Here is a dump of comments from kazupon (to prevent them from disappearing after 90 days)
By the way, I am not participating in the conversation myself.
kazupon 2024-05-22
node のバージョンを明示していただいているので,メモリリークの調査は Node.js 公式で提供されている方法で調査できます.
Node.js — Tracing garbage collection
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
https://nodejs.org/en/learn/diagnostics/memory/using-gc-traces#memory-leak\
request の生成は ab 等のパフォーマンス測定ツールを使えば,再現環境は構築できるはずです.
で,Nuxt のようなフレームワークを使った場合は,メモリリークの調査は,いきなり実際に使っているアプリケーションに対して行うと難しいので,一般的は最小構成の環境を作って切り分けながら行います.
Nuxt の場合は以下の環境をそれぞれ用意して行うとよいと思います.\
- Node で hello world の response を返すような simple な HTTP サーバ
- Node + Nuxt (nuxt init で生成された初期構成)
- Node + Nuxt + Nuxt Module (使っている Nuxt Module を差し込んでいく)
- Node + Nuxt + Nuxt Module + 実際のアプリケーションに近い最小コード
自分がメンテしている OSS の issue で何度かメモリリーク対応したので,参考にしてください.
Version 8.0.0 rc 9 throws memory leak · Issue #2612 · nuxt-modules/i18n
Environment Operating System: Linux Node Version: v20.5.1 Nuxt Version: 3.8.2 CLI Version: 3.10.0 Nitro Version: 2.8.1 Package Manager: [email protected] Builder: - User Config: - Runtime Modules: - Build ...
https://github.com/nuxt-modules/i18n/issues/2612
SSR Memory Leak with Legacy API · Issue #920 · intlify/vue-i18n
Reporting a bug? Using vite-plugin-ssr to run Vue 3 with server side rendering, leaving the legacy api enabled will cause memory to slowly increase with every request. Expected behavior Memory does...
https://github.com/intlify/vue-i18n-next/issues/920
ちなみに,docker 使っているみたいですが,メモリリーク調査するときは docker 使わずに,素の環境でしましょう.
コンテナ上でもできますが,コンテナ向けの設定が必要になったり(ポートフォワーディング),ツールが正しく計測できなかったりします.