Erlang のプロセスメモリを追う その3

自分の作っているサーバーに関しての結論。

  • erl の +P オプションに Max 値 134217727 を設定してはならない
    • 自分のマシンでは 1GB のメモリが起動時に確保されてしまった。
    • マシンのメモリサイズと process_info で知る事の出来る process メモリサイズによりおおよそのプロセス数上限を計算する事が出来るはずなのでそれをセットする。
  • gen_server で State を更新するようなプロセスでは使い捨てプロセスが使えず、プロセスヒープが大きくなったままの場合がある。十分注意した上で動作を理解して elrang:gerbage_collect(Pid) を呼ぶと改善する事が出来る。
    • 手元の環境では GC にかかる時間は数十 micro sec だった

追記

  • gen_server の hibernate は garbage_collect よりもかなり遅い。