Node 有一个“集群”模块,使用它可以创建一个派生子进程的父进程。所有的工作子进程都监听同一个套接字,因此它们之间(以及 CPU 之间)的负载平衡发生在内核中。
这样的过程还必须监视 child 的死亡情况并 fork 新的 child ,大概需要一些指数退避。如果这样一个进程将所有子进程的 stdout 聚合到一个文件,将它们的 stderr 聚合到另一个文件,并支持 SIGHUP 重新打开这些文件(用于 logrotate),那就太好了。
如果我理解正确的话,pm2 可以做到这一点。不过,除了 pm2 之外——是否有任何经过验证的模块/脚本/包可以做到这一点,或者我必须编写自己的模块/脚本/包?
已经投入生产的公司在做什么?
最佳答案
沃尔玛(至少最初)决定不使用集群,而是使用单 Node 进程运行每台机器。以下是他们的设置要点:https://gist.github.com/hueniverse/7686452
对于那些确实希望将其 Node 应用程序分布在多个 CPU 上的人来说,PM2 似乎是一个受欢迎的选择。
就日志聚合和日志轮转而言,我想基本的 unix logrotate
会有很多用途。
关于Node.js、集群模式、日志聚合和logrotate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23880879/