edd*_*oya 6 optimization performance nginx performance-tuning
我试图了解在同一台机器上运行多个 nginx 实例(主实例)对性能的影响,而不是使用不同的服务器块将它们全部加载到单个实例中。使用多个 nginx 实例如何影响 worker_process 和 worker_connections 优化?
我看到大量建议表明 worker_process 应该反映内核数量,最多应该是内核数量的两倍。我也明白 worker_connections 应该与 ulimit 匹配,或者稍微低于 ulimit。提供太多连接可用,或者每个内核有太多工作人员应该会损害性能。
我有两个核心和 1024 的 ulimit,但我有 4 个 nginx 实例,每个实例都有以下设置:
worker_processes 4;
worker_connections: 1024;
Run Code Online (Sandbox Code Playgroud)
这不是worker_processes 16;和我有和 一样的效果worker_connections 4069;吗?
注意:当我说 nginx 实例时,让我说清楚,我的意思是有 4 个独立的 nginx 主进程,每个进程都提供了一个具有相似设置的不同配置文件,每个进程都有自己的工作人员。
注 2:这个场景是我继承的并且已经到位。我想弄清楚我是否应该改变 nginx 的配置方式并有一个明智的理由。
从系统角度来看,运行 4 个主站(带 4 个服务器部分)或单个主站(带 16 个服务器部分)没有本质区别。它实现相同的架构:并行的基于事件的流程。
如果您有多个主机,则必须将工作人员/核心比率考虑到所有主机的工作人员总数。这来自几个限制:
使用单个 master 应该会更高效一些,因为像 MIME 映射等一些资源只会加载一次。但这只是一个小问题。
使用单个主服务器应该会更有效,因为所有服务器共享一个大型工作池。如果一台服务器暂时需要大多数工作人员(例如 16 名),它可能会满足他们。在多主机配置(例如 4 个主机和 4 个工作人员)中,他们最多只能使用他们拥有的:4 个工作人员。另一方面,这可能是期望的效果:严格分为 4 个实例,以确保每个实例始终至少获得主机四分之一的关注。但再也不会了。
使用 1 个 master 应该更容易配置和维护(想想:安全更新)。
拥有 4 个主设备时,它应该更具弹性:您可以在不触及其他 3 个主设备的情况下崩溃或完全搞乱一个主设备配置。
除非您的 4 个 master 使用不同的 Nginx 版本,否则您将无法从超级优化中受益,例如为每个 master 编译精确的模块集。
| 归档时间: |
|
| 查看次数: |
3688 次 |
| 最近记录: |