2014-10-22 1 views
4

Окружающая среда archlinux работает на виртуальной машине.iex и erl запускаются очень медленно, если не назначить имя узла

Эрланг/ОТП 17 [ГЭР-6.2] [источник] [64-битный] [SMP: 2: 2] [асинхронные нити: 10] [HIPE] [ядро-опрос: ложь]

Interactive Elixir (1.0.2) - нажмите Ctrl + C для выхода (типа Л() ENTER для помощи)

Если я бегу erl или iex, это займет как 8 ~ 9 секунд, чтобы начать.

Но если я запустил erl -name xxx или iex --name xxx, отсрочки вообще нет.

Пока erl -sname xxx или iex --sname xxx не работает, занимает 8 секунд и более.

Итак, вопрос: есть ли способ пропустить задержку?

ответ

5

Я просто понял, что мои erl подсказка показывает ([email protected])1>

Оказывается, я пропустил шаг, который add hostname to /etc/hosts при установке Archlinux.

Итак, я добавляю эту строку, подскажут 1> сейчас и начнет мигать. Задача решена.

3

Вы можете использовать strace, чтобы проверить, что происходит.

Запустить узел Erlang без поддержки распространения и отслеживать его поведение. Отчет создается сразу после закрытия узла Erlang. Результаты будут отсортированы по относительному времени в порядке убывания, поэтому посмотрите сверху, чтобы узнать, что требуется время.

strace -c -f -r erl 

Сравните это с узлом Erlang с распределением позволило:

strace -c -f -r erl -name pigeon 

Допустим, вы обнаружите, что «открытый» это то, что занимает много времени. Вы можете ограничить анализ этой системы вызова и получить более подробный вывод, пытаясь:

strace -e open -f -r erl 

Дайте нам знать, если вы найдете что-нибудь интересное.