Herokuで動いているnodeアプリからヒープスナップショットを採取
に全部書いてあるんですけど、nodeアプリは--inspect=8080とかを引数で与えるとChromeのDevToolを使ってデバッグが可能になるので、Procfileに仕込んでやります 8080とかを選びがちなんですが、なんか常にmitmproxy立ててるし普通に衝突してしまった Error: listen EADDRINUSE: address already in use :::8080
けど上記ページにないものの普通に:で指定できるので大丈夫です
heroku ps:forward -a appname 9090:8080
手元:宛先
あとこれも情報見あたらないんですけど、ps:foward利用初回時にはRunning this command for the first time requires a dyno restart.ってdynoの再起動を要求される
起動時にws://127.0.0.1:8080/aaaa-aaaa-aaaa-aaaa みたいな表示出るんですが、これは覚えてなくていいです
chrome://inspect/に行ってOpen dedicated DevTools for Nodeから対象のlocalhost:9090を追加すると一覧に出るようになる
https://gyazo.com/c4f53f2d35bd0980f98f0fd42ad23aa9
https://gyazo.com/e6ca2b925f0c72c850acc555b51eb879
非常にこまっている点
スナップショットを記録するとHeroku側の表示のメモリ使用量(memory_rss)が512MBを突破してR14 Memory quota exceededが出始める
ヒープスナップショット自体の表示は100MBちょっとぐらいなので、何か別の要素(nodeのinspect機能そのもの?)がかなり食べているが、走っているインスタンスには接続できないので調査できない…
けどアプリプロセスは落ちないので、警告を無視して記録を続行してもいい(=inspect分は落とすカウントに入っていない)ってことなんだろうか
採取時だけならまだしも、採取が終わってしばらく経ってもメモリ使用量が全然減らない
400MBぐらいを往復してる
元の使用量に戻すには再起動するしかない?
これ普通に問題だと思うんですけど調べても全く言及してる記事とかが出てこなくて困ってる