My ElixirアプリはCPUの約50%を使用していますが、実際には<%を使用する必要があります。私は何が高いCPU使用率を引き起こしているのか把握しようとしており、何か問題があります。Elixir/Erlang:CPU使用率の高いソースを見つけるにはどうすればよいですか?
は、リモートコンソールでは、私は
- が
Process.info
- 削減数によってプロセスをソートして、プロセスの情報を見てみると
Process.list
- ですべてのプロセスを一覧表示しようとしたメッセージキューによってプロセスをソート
- 長さ
メッセージキューはすべて0であるが、いくつかのプロセスでは減少カウントが非常に高い。高減速カウントが
- 命名されているとプロセス:file_server_2
- ReactPhoenix.ReactIo.Pool
- :
code_server(1)及び(3)の両方の私の他のアプリに存在しています、私はそれが(2)でなければならないように感じる。これは私が立ち往生している場所です。さらに進んで、なぜ(2)CPUを多用しているのか理解することができますか?
ReactPhoenixはreact-stdioを使用しています。 top
を見ると、react-sdtioはリソースを使用しませんが、ビームは使用します。
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 87 53.2 1.2 2822012 99212 ? Sl Nov20 580:03 /app/erts-9.1/bin/beam.smp -Bd -- -root /app -progname app/releases/0.0.1/hello.sh -- -home /root -- -noshell -noshell -noinput -boot /app/
root 13873 0.0 0.0 4460 792 ? Rs 13:54 0:00 /bin/sh -c deps/react_phoenix/node_modules/.bin/react-stdio
私はSTDINは、リソースの問題を引き起こす可能性があることをthis StackOverflow postで見たが、それはここに適用されるかどうかはわかりませんよ。とにかく、どんな助けも大歓迎です!
私はprod' 'でそれを利用可能にするために何をしますか? 'iex'に接続して':etop.start'を実行すると、 "**(UndefinedFunctionError)function:etop.start/0は未定義です(モジュール:etopは利用できません)"という結果になります。 – mudasobwa
リンク先の文書によれば、 'etop'を接続するノードを指定することができます:' etop -node testnode @ myhost -setcookie MyCookie' – Kernael
@Kernaelこれが私の質問に対する答えだったら、問題は指定通りエラーメッセージ "module' etop' in not available。 "私はノードを指定することが魔法のようにこのモジュールを利用可能にするとは思っていません。 – mudasobwa