引用『深入理解 Nginx:模塊開發與架構解析(第 2 版)』一書 (2016-02-01 出版):

… accept 鎖默認是打開的,如果關閉它,那麼建立 TCP 連接的耗時會更短,但 worker 進程之間的負載會非常不均衡,因此不建議關閉它。…

這句描述隨著時間推移而改變。

accept_mutex 是為了解決 accept 驚群問題,雖然 Linux Kernel 早在很久以前的版本就解決了這個問題,不過因為 accept 還依賴著 epoll,原則上必須也要解決 epoll 驚群問題才算完解。

所幸,Linux Kernel 4.5-rc1 宣布正式支持 EPOLLEXCLUSIVE,進而解決了 epoll 驚群問題。

結論,

  1. 只要不在特別舊的 Linux Kernel 上,原則上都可以把 accept_mutex 關閉。
  2. 若是在 Linux Kernel 4.5 之後版本,accept_mutex 關閉應該變成必然的選項了。
  3. 需注意的是,Nginx 1.11.3 之後版本,accept_mutex 預設為關閉。