【发布时间】:2017-11-21 14:03:51
【问题描述】:
我的 Elixir 应用程序使用了大约 50% 的 CPU,但实际上应该只使用
在远程控制台中,我尝试过
- 使用
Process.list列出所有进程 - 用
Process.info查看进程信息 - 按减少计数对进程进行排序
- 按消息队列长度对进程进行排序
消息队列都接近于 0,但某些进程的减少计数非常高。具有高减少计数的进程被命名
- :file_server_2
- ReactPhoenix.ReactIo.Pool
- :code_server
(1)和(3)都存在于我的其他应用程序中,所以我觉得它必须是(2)。这就是我卡住的地方。我怎样才能进一步弄清楚为什么 (2) 使用了这么多 CPU?
我知道ReactPhoenix 使用react-stdio。看看top,react-sdtio 不使用任何资源,但 beam 使用。
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
我在this StackOverflow post 中看到stdin 会导致资源问题,但我不确定这是否适用于此。无论如何,任何帮助将不胜感激!
【问题讨论】:
标签: reactjs erlang elixir cpu-usage stdio