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

Deployment 为什么每个节点运行多个Web服务器实例?,deployment,nginx,webserver,Deployment,Nginx,Webserver,我经常看到(Rails | Java | PHP | Node.js | nginx |等)的设置,其中有许多web服务器软件实例(nginx、apache、mongrel,无所谓)在每台服务器上运行并服务于同一个应用程序,而不是一个“巨大”的实例 为什么会选择这样的方法?我不清楚为什么为同一个应用程序服务的许多较小的实例比一个调优为使用最大可用ram和线程的实例更好 为了清楚起见,我经常看到这样的语句“……我们有10台服务器,每台服务器运行20个实例”。为什么不“10台服务器,每个服务器运行1

我经常看到(Rails | Java | PHP | Node.js | nginx |等)的设置,其中有许多web服务器软件实例(nginx、apache、mongrel,无所谓)在每台服务器上运行并服务于同一个应用程序,而不是一个“巨大”的实例

为什么会选择这样的方法?我不清楚为什么为同一个应用程序服务的许多较小的实例比一个调优为使用最大可用ram和线程的实例更好


为了清楚起见,我经常看到这样的语句“……我们有10台服务器,每台服务器运行20个实例”。为什么不“10台服务器,每个服务器运行1个实例”

只有在单线程(如node.js或mongrel)的情况下运行多个Web服务器实例才有意义,以利用多个CPU核。

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

我想补充一下Steve的精彩回复,基于事件的多线程服务器结合了每个线程能够处理多个请求的优点,同时能够使用系统中所有可用的CPU核心


除了CPU内核,使用一个程序实例而不是多个实例可以节省内存(重复的代码和数据)而且CPU缓存不会不断被破坏。

我想补充一下Steve的精彩回复,基于事件的多线程服务器结合了每个线程能够处理多个请求的优点,同时能够使用系统中所有可用的CPU核心

除了CPU核心之外,使用一个程序实例而不是多个实例可以节省内存(重复的代码和数据)和CPU缓存,从而避免不断的破坏。

事实上,这毕竟是有道理的。事实上,这毕竟是有道理的。