accept_mutex_delay
'accept_mutex_delay' 指令控制 worker 在接受新连接之前等待 accept mutex 可用的时间。 — NGINX Core
accept_mutex_delay
events
语法accept_mutex_delay time;
默认值none
上下文events
模块NGINX Core
参数1
说明
'accept_mutex_delay' 指令在 NGINX 中指定了当 worker 进程尝试接受新连接但无法立即获取 accept mutex 时所应用的延迟。这个 mutex 对于在多个 worker 进程之间同步访问至关重要,以避免服务器因大量快速的连接请求而不堪重负。如果 worker 无法获取该 mutex,它会在再次尝试接受连接之前暂停由此指令指定的时长,从而在各 worker 之间平衡负载并提高效率。\n\n'accept_mutex_delay' 的参数以毫秒为单位定义,允许管理员根据服务器容量和预期负载进行精细调整。例如,设置 'accept_mutex_delay 500;' 允许 worker 最多等待半秒再重试。此设置会显著影响连接在多个 worker 进程之间的分配,尤其是在高并发场景下。适当的调优可以在最大化吞吐量和减少延迟的同时最小化资源争用。\n\n需要注意的是,虽然增加延迟可以在高负载时通过允许其他 worker 接受连接来改善公平性,但在低负载情况下也可能导致接受的连接数量减少,因此需要根据实际流量模式进行设置。
配置示例
events {
accept_mutex on;
accept_mutex_delay 300;
}⚠
要使该指令生效,accept_mutex 必须启用。
⚠
将延迟设置得过高可能会导致连接接受率降低,尤其是在低流量期间。
⚠
并非所有操作系统以相同方式处理 mutexes,这可能会影响该指令的行为。