Age*_*nes 4 parallel-processing erlang scheduling
前言:当我在下面说“机器”时,我指的是物理专用服务器,或虚拟专用服务器。当我说“节点”时,我的意思是 erlang 虚拟机的一个实例,其中可以有多个作为单独进程在单个 unix 内核下运行。
我有一个涉及多个 erlang/OTP 应用程序的项目。这些应用程序将一起运行并在同一台机器上相互通信。它们都将访问磁盘,使用内存并生成 erlang 进程。他们还将使用网络资源,因为他们将与集群中运行相同应用程序集的类似机器进行通信。
几乎所有这些通信都是通过 HTTP 进行的。因此,我可以将每个 erlang OTP 应用程序分离到同一台机器上的 erlang VM 的单独实例中,并且它们仍然可以相互通信。
我的问题是:让它们全部运行在一个 erlang VM 下是否更好,以便这个 erlang VM 进程可以在它们之间分配对资源的访问,并安排各种 erlang 进程的执行。
还是在给定的服务器上有单独的 erlang 节点更好?
如果一个比另一个好,为什么?
我假设在单个 erlang vm 中运行所有这些应用程序,本质上,服务器的完整运行将导致更好的性能。操作系统只是在低级别管理磁盘和内存,并且只有一个重要的进程(erlang VM)可以切换……而当 erlang VM 具有所有的整体视图时,它在分配资源方面可能更聪明二郎进程。
这可能是我需要测试的东西,但我无法在短期内有效地这样做。
答案是:视情况而定。
使用单节点的优点:
使用多个节点的优点: