我想了解在同一台机器上运行多个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个服务器部分的主服务器没有内在的区别。 它实现了相同的体系结构:并行化的基于事件的过程。
如果你有几个主人,那么你的核心比例必须是所有主人的总人数。 这来自几个约束:
它应该是一个单一的主更有效率,因为一些像MIME地图等资源只能加载一次。 但这是一个小问题。
对于单个主服务器应该更高效,因为所有服务器共享一个大的工作池。 如果一台服务器暂时需要大多数工人(比如说16),那么可能会得到他们。 在多主站configuration(比如4个主站4个主站)上,他们最多只能使用4个员工。 另一方面,它可能是所期望的效果:严格分为4个实例,以确保每个人至less得到你主持人关注的四分之一。 但从来没有更多。
使用1个主设备进行configuration和维护应该更容易(请考虑:安全更新)。
它应该更有弹性与4个主人:你可以崩溃或完全混乱一个主configuration,而不触及其他3人。
除非你的4位大师使用不同的Nginx版本,否则你将不会受益于超级优化,比如为每个master编译一组确切的模块。