环境是在虚拟机中运行的archlinux。
Erlang / OTP 17 [erts-6.2] [来源] [64位] [smp:2:2] [async-threads:10] [hipe] [kernel-poll:false]
Interactive Elixir(1.0.2) - 按Ctrl + C退出(键入h()ENTER for 帮助)
如果我运行erl
或iex
,则需要8~9秒才能启动。
但如果我运行erl -name xxx
或iex --name xxx
,则根本没有延迟。
erl -sname xxx
或iex --sname xxx
无效时,需要8秒或更长时间。
所以问题是:有没有办法跳过延迟?
答案 0 :(得分:5)
我刚刚意识到我的erl
提示符显示(user@hostname.localdomain)1>
原来我在安装Archlinux时跳过了add hostname to /etc/hosts
的步骤。
所以我添加该行,提示现在显示1>
,然后立即启动。问题解决了。
答案 1 :(得分:3)
您可以使用strace查看正在进行的操作。
启动Erlang节点,不支持分发并跟踪其行为。关闭Erlang节点后立即生成报告。结果将按相对时间按降序排序,因此请查看顶部以查看需要时间的内容。
strace -c -f -r erl
将其与启用了分发的Erlang节点进行比较:
strace -c -f -r erl -name pigeon
让我们说你发现"打开"是需要时间的。您可以通过尝试:
将分析限制为该系统调用并获得更详细的输出strace -e open -f -r erl
如果您发现任何有趣的内容,请告诉我们。