前提
どうもメモリ使用量が増えつづける。memory leakをしている気がする。しかし手元のdev環境では再現しない。どうしても本番環境で調査しなければならない。そんなどうしようもない状況に追い込まれた人向けの記事です。基本的にやめておいたほうが良いと思います。heapdumpのnpmモジュールとか入れて、dumpのsnapshotを撮影して……みたいなのが非常に面倒くさい人向けでもあります。ssh接続ができてchromeが入っていれば、追加でインストールとか要りません。
pm2にinspectの引数をつけてrestartする
pm2 restart NUM --node-args '--inspect'
これでdebuggerありで起動します。
注意点として、--inspectで起動するとメモリの使用量が如実に増えます。ぎりぎりのメモリでやりくりしているならやめておいたほうが良いです。
port変えたかったら変えてもいいです。
ローカルとリモートをportforwardする
vscodeでサーバーとつないでportforwardingしても良いですが、一応下記コマンドで出来ます。
ssh -NL 9229:example.com:9229 user@example.com
これでサーバー上の9229ポートをローカルで使えるようになりました。
chrome inspectを起動
アドレスバーでchrome://inspect
あとはいつも通りです。基本設定でport9229入っている気もしますが、入っていないときはConfigure->localhost:9229としておくとtargetをinspectできるようになります。
あとは自分の好きなときに3点ヒープダンプ法などを用いて、増加している困ったオブジェクトを探し出すことができます。