accept_mutex

`accept_mutex` 指令控制在接受新连接时是否使用互斥。 — NGINX Core

accept_mutex
events
语法accept_mutex on | off;
默认值off
上下文events
模块NGINX Core
参数flag

说明

NGINX 中的 `accept_mutex` 指令用于通过管理工作进程在高负载时如何处理传入连接来提高基于事件的服务器的性能。当设置为 `on` 时,该指令一次只允许一个工作进程接受新连接,从而减少竞争并提高资源利用率。在并发连接数超过单个工作进程处理能力的情况下,这尤其有用,因为它有助于防止惊群问题,即多个进程同时尝试接受新连接。 `accept_mutex` 指令依赖于 `accept_mutex_delay` 参数,该参数指定当有其他工作进程可用时,工作进程在尝试接受新连接前应等待的延迟(以毫秒为单位)。如果适当设置此延迟,它可以实现工作进程间的同步,降低资源被过载的可能性。这种同步通过确保一个工作进程“赢得”接受新传入连接的权利来实现,而其他进程则等待轮到它们。最佳配置会根据服务器的负载和底层基础设施的不同而有很大差异。

配置示例

events {
    accept_mutex on;
    accept_mutex_delay 500;
}

将 `accept_mutex` 设置为 `on` 在高负载下可能导致连接接受的延迟增加;最好仅用于测试和调优场景。

确保已正确配置 `accept_mutex_delay`;延迟设置过高会降低响应性。