在同一台机器上运行多个实例时的Nginx性能

我想了解在同一台机器上运行多个nginx实例(主机)的性能影响,而不是使用不同的服务器块将它们全部加载到单个实例中。 如何使用多个nginx实例影响worker_process和worker_connections优化

我看到大量的意见,指出worker_process应该反映核心数量,最多应该是核心数量的两倍。 我也明白,worker_connections应该与ulimit匹配,或者在ulimit下有一点点。 build立太多的连接,或者每个核心拥有太多的工作人员都会损害性能。

我有两个核心和一个1024的ulimit,但我有4个nginx实例,每个实例有以下设置:

worker_processes 4; worker_connections: 1024; 

这不像我有worker_processes 16;有相同的效果worker_processes 16;worker_connections 4069;

注意:当我说nginx实例的时候,让我明确一下,我的意思是有4个独立的主nginx进程,每个进程有一个不同的configuration文件,它们有相似的设置,每个configuration文件都有自己的工作者。

注2:这个场景是我已经inheritance并已经到位的。 我试图找出是否应该改变nginx的configuration方式,并有一个明智的理由。

从系统angular度来看,运行4个主服务器与4个服务器部分或者16个服务器部分的主服务器没有内在的区别。 它实现了相同的体系结构:并行化的基于事件的过程。

如果你有几个主人,那么你的核心比例必须是所有主人的总人数。 这来自几个约束:

  • 确保CPU不超载,因此工作人员的数量应<=核心数量
  • 确保并行化和操作系统调度得到最佳使用,因此工作人员数量应尽可能多
  • HTTP服务器工作人员的CPU使用率低,大部分等待I / O,因此实际上可以安全地分配2到4倍的内核数量

它应该是一个单一的主更有效率,因为一些像MIME地图等资源只能加载一次。 但这是一个小问题。

对于单个主服务器应该更高效,因为所有服务器共享一个大的工作池。 如果一台服务器暂时需要大多数工人(比如说16),那么可能会得到他们。 在多主站configuration(比如4个主站4个主站)上,他们最多只能使用4个员工。 另一方面,它可能是所期望的效果:严格分为4个实例,以确保每个人至less得到你主持人关注的四分之一。 但从来没有更多。

使用1个主设备进行configuration和维护应该更容易(请考虑:安全更新)。

它应该更有弹性与4个主人:你可以崩溃或完全混乱一个主configuration,而不触及其他3人。

除非你的4位大师使用不同的Nginx版本,否则你将不会受益于超级优化,比如为每个master编译一组确切的模块。