这是和以前一样的问题: node.js child processes 我问的是我是否应该为我的node.js游戏使用每场比赛的子进程. 但我意识到以前我忽略了一些非常重要的细节. 游戏允许玩家以某些有限的方式
node.js child processes
我问的是我是否应该为我的node.js游戏使用每场比赛的子进程.
但我意识到以前我忽略了一些非常重要的细节.
游戏允许玩家以某些有限的方式操纵游戏规则.但是,这仍然会导致无限循环/内存泄漏/停顿和崩溃.
每场比赛1个进程是可扩展/合理的想法吗?
如果任何单个游戏进程都占用了所有内存或CPU,那么这是不可扩展的.如果您的服务器是一台8核计算机,那么八个游戏可以占用所有的CPU时间,除了通过顶层监控进程并根据需要终止它们之外,您无能为力 – 但这会导致服务器颠簸.现在,如果你设法首先防止这些东西(对我来说听起来更好),它是可行的.每个进程将占用超过30mb的内存,因此每隔几百个内存就需要一台强大的服务器.以http://site.nodester.com为例,它们似乎在一台机器上运行大约600个进程.他们的软件堆栈也是开源的:https://github.com/nodester/nodester
node v0.8 will bring Isolates(无共享线程),它可能比子进程使用更少的资源.
对此更为“严肃”的解决方案是使用某种虚拟化(如OpenVZ),它允许您设置资源限制,然后只保留一组虚拟服务器,每个游戏都有自己的.它没有它看起来那么重,每台服务器的开销大约为18mb,每台机器可以容纳数百台,尽管它的设置要复杂得多.