Лучше ли запускать несколько узлов erlang на машину или только один на машину? - PullRequest
2 голосов
/ 14 ноября 2010

Предисловие: Когда я говорю «машина» ниже, я имею в виду либо физический выделенный сервер, либо виртуальный частный сервер.Когда я говорю «узел», я имею в виду экземпляр виртуальной машины erlang, из которой может быть несколько запущенных в качестве отдельных процессов под одним ядром Unix.

У меня есть проект, который включает несколько erlang /OTP-приложения.Приложения будут работать вместе и общаться друг с другом на одном компьютере.Все они будут ударять по диску, используя память и порождая процессы эрланга.Они также будут использовать сетевые ресурсы, потому что они будут общаться с аналогичными машинами с одинаковым набором приложений, запущенных на них в кластере.

Почти вся эта связь осуществляется через HTTP.Таким образом, я мог бы разделить каждое приложение erlang OTP на отдельный экземпляр виртуальной машины erlang на одной и той же машине, и они могли бы по-прежнему общаться друг с другом.

Мой вопрос таков: лучше ли запускать их под одним erlangВМ, чтобы этот процесс виртуальной машины Erlang мог распределять доступ к ресурсам между ними и планировать выполнение различных процессов Эрланга.

Или лучше иметь отдельные узлы Эрланга на данном сервере?

Если один лучше другого, почему?

Я предполагаю, что запуск всех этих приложений в одном erlang vm, который, по сути, дает полный запуск сервера, приведет к повышению производительности.Операционная система просто управляет диском и оперативной памятью на низком уровне и имеет только один значительный процесс (виртуальная машина Erlang) для переключения с ... и виртуальная машина Erlang, вероятно, более умна в распределении ресурсов, когда она имеет целостное представление обо всехпроцессы erlang.

Это может быть то, что мне нужно проверить, но я не в состоянии сделать это эффективно в ближайшем будущем.

Ответы [ 3 ]

2 голосов
/ 15 ноября 2010

Согласитесь с @I ДАЙТЕ ОТВЕТЫ ОТ CRAP

Я бы пошел с одной ВМ.Вот почему:

  • динамическая обработка очередей времени выполнения, принадлежащих планировщикам (важно различное начало загрузки ЦП)
  • меньшее количество виртуальных машин для мониторинга
  • лучшее пониманиераспределения памяти и обнаружения вредоносного процесса (можно сравнить все)
  • намного проще межприкладной надзор

Меня не волнует сбой виртуальной машины - вам нужнобудь готов любым способом.Особенно хорошо работает сердце в скоплении равных единиц.

2 голосов
/ 15 ноября 2010

Ответ: это зависит.

Преимущества использования одного узла:

  • Память контролируется одной Erlang VM. Это намного проще.
  • Связь между приложениями (при использовании erlang-сообщения) происходит быстрее.
  • Менее переключение контекста операционной системы происходит

Преимущества использования нескольких узлов:

  • Если система связывает код C с виртуальной машиной, смерть одного узла из-за ошибки в C не убьет другие.
1 голос
/ 16 ноября 2010

Мы всегда использовали одну ВМ на приложение, потому что им проще управлять.

Планировщик и поддержка SMP в Erlang прошли долгий путь за последние несколько лет, поэтому не так уж много причинкак было раньше, чтобы запустить несколько виртуальных машин на одном узле.

...