我们有一个PCF的内部安装。开发人员希望推动无状态(遵守12因素规则)nodejs应用程序,该应用程序将产生其他应用程序实例,即根据https://nodejs.org/api/cluster.html利用nodejs群集。因此,每个容器上都会运行多个进程。从PCF的角度来看,这有任何已知的问题吗?我感谢它违反了每个容器一个应用程序实例的规则/建议,但这只是一个建议:)欢迎所有信息。关心约翰
在Cloud Foundry上运行生成子进程的应用程序时,需要注意的首要问题是内存消耗。在推送适用于整个容器的应用程序时设置内存限制。这包括父进程,生成的子进程和一些开销(当前初始化进程,sshd进程和运行状况检查)。
为什么这是个问题?大多数构建包都假设只有一个进程正在运行,并且在保持在定义的内存限制下时它将消耗尽可能多的内存。他们尝试配置运行您的应用程序的软件来执行此操作。当您生成子进程时,这会破坏buildpack的假设,并可能创建应用程序将超出定义的内存限制的情况。发生这种情况时,即使是一个字节,该进程也会被终止并重新启动。
如果您担心扩展应用程序,则不应尝试在一个超大容器中分离子进程。相反,让平台帮助您并扩大应用程序实例的数量。平台可以很容易地做到这一点,通过使用多个较小的容器,您也可以进行扩展。事实上,如果你已经拥有一个12因素的应用程序,它应该能够以这种方式工作。
祝好运!