Nginx 不支持配置 devpoll 或 poll:devpoll 已自 1.1.0 版本彻底移除,配置会报错;poll 是自动回退机制,不可显式启用,应显式指定 epoll/kqueue 等高效模型。

Nginx 的 events 块本身不支持直接配置 devpoll 或 poll 作为事件驱动模型——这两个机制在现代 Nginx 版本中已被弃用或完全移除,**无法通过配置启用**。
devpoll 已被彻底移除
devpoll 是 Solaris 系统早期使用的事件通知接口,Nginx 在 0.6.x 版本后就不再维护对其的支持。自 1.1.0(2011 年)起,源码中已删除所有 devpoll 相关实现。即使你在 events 块中写入:
events {
use devpoll;
}Nginx 启动时会报错:unknown event method "devpoll",并拒绝加载配置。
poll 是默认回退机制,不可显式启用
poll 是 POSIX 标准的通用 I/O 多路复用方式,Nginx 内部将其作为“兜底选项”:当系统不支持 kqueue(FreeBSD/macOS)、epoll(Linux)或 eventport(Solaris)时,自动选用 poll。它不能也不需要手动指定,以下写法无效:
events {
use poll; # ❌ 无效,Nginx 忽略或报错原因在于:poll 效率较低(O(n) 时间复杂度),Nginx 设计上仅在无更好选择时才隐式使用,且不提供用户干预入口。
正确做法:依赖自动检测 + 显式指定高效模型
你应该做的是:
- 确认运行环境支持的高效事件模型(如 Linux 用
epoll,FreeBSD 用kqueue) - 在
events块中显式声明,避免依赖自动探测的不确定性 - 忽略
devpoll和poll,它们不属于可配置项
例如,在 Linux 上推荐配置:
events {
use epoll;
worker_connections 10240;
multi_accept on;
}验证当前实际使用的事件模型
启动 Nginx 后,执行:
nginx -V 2>&1 | grep -o 'epoll\|kqueue\|eventport'
或查看错误日志(error_log 级别为 info 时)中类似:
[info] ... using the "epoll" event method
这表示 Nginx 已成功启用对应模型。若未输出,说明 fallback 到了 poll(无显式提示),此时应检查系统环境与编译选项。


















