为什么每个节点运行多个Web服务器实例?

时间:2012-02-05 21:07:29

标签: deployment nginx webserver

我经常看到(Rails | Java | PHP | Node.js | nginx | etc ..)的设置,其中有许多运行每台服务器并提供相同的应用程序,而不是单个“巨大”实例。

为什么会选择这种方法?我不清楚为什么服务于同一应用程序的许多小实例可能比调整使用最大可用内存和线程的一个实例更好。

为了清楚自己,我经常看到像这样的陈述......我们有10台服务器,运行20个< some webserver>每个的实例。为什么不“10台服务器,运行1个< some webserver>每个”的实例?

2 个答案:

答案 0 :(得分:2)

运行Web服务器的多个实例只有在它是单线程(如node.js或mongrel)才能利用多个CPU核心时才有意义。

答案 1 :(得分:1)

我想补充一下史蒂夫的出色回复,即基于事件的多线程服务器结合了每个线程能够处理许多请求的好处 - 同时能够使用所有可用的CPU核心系统

除了CPU内核之外,只有一个程序实例而不是多个程序实例可以节省内存(重复的代码和数据)以及CPU缓存的持续垃圾。