如果不分配节点名称,iex和erl启动非常慢

时间:2014-10-22 02:20:07

标签: erlang archlinux elixir

环境是在虚拟机中运行的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   帮助)

如果我运行erliex,则需要8~9秒才能启动。

但如果我运行erl -name xxxiex --name xxx,则根本没有延迟。

erl -sname xxxiex --sname xxx无效时,需要8秒或更长时间。

所以问题是:有没有办法跳过延迟?

2 个答案:

答案 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

如果您发现任何有趣的内容,请告诉我们。