OpenResty Dashboard 是官方推荐的轻量级可视化控制台,可实时呈现 worker 级 CPU、内存、连接数及请求速率等指标,无需埋点;需运行于 OpenResty 环境,配置启用模块与 dashboard_monitor 指令,并通过 /dashboard 路径访问,支持 Worker Overview、Per-Worker Detail 和 Real-time Flame Graph 三大核心视图用于性能诊断。

OpenResty Dashboard 是 OpenResty 官方推荐的轻量级可视化控制台,能直接暴露 Nginx(尤其是 OpenResty)内部运行时指标,其中 worker 级别的 CPU、内存、连接数、请求处理速率等均可实时呈现,无需额外埋点或代理。
确认基础依赖与启用状态
Dashboard 本身是基于 OpenResty 的 Lua 应用,必须运行在 OpenResty 环境中(非原生 Nginx)。检查是否已启用:
- 确认安装的是 OpenResty(如 1.21.4.2+),而非普通 Nginx;可通过
openresty -v验证 - 确保
resty-dashboard已安装:运行opm get openresty/resty-dashboard - 主配置中需加载模块:
load_module modules/ndk_http_module.so;和load_module modules/echo_http_module.so;(部分版本需手动开启)
配置 Dashboard 接入端点
在 nginx.conf 的 http 块内添加如下配置段:
# 启用 Dashboard 内置服务
dashboard_monitor on;
dashboard_monitor_path /dashboard;
<pre class="brush:php;toolbar:false;"># 可选:限制访问来源
location /dashboard {
allow 127.0.0.1;
allow 192.168.0.0/16;
deny all;
content_by_lua_block {
require "resty.dashboard".content()
}
}
重载配置后,访问 http://your-server-ip/dashboard 即可进入控制台首页。
重点查看 worker 负载的 3 个核心视图
Worker Overview 页面顶部显示所有 worker 进程的实时快照:
- CPU %:每个 worker 当前 CPU 使用率(非系统级,而是进程内实际消耗,精度高)
- Requests/sec:每秒请求数,按 worker 分列,可快速识别“热点 worker”
-
Active Conn:当前活跃连接数,结合
worker_connections配置值,判断是否逼近上限
Per-Worker Detail 页面点击任一 worker PID,展开其完整指标:
- 内存分配(Lua VM heap、C malloc usage)
- 当前正在执行的 Lua handler 名称(如
access_by_lua*或content_by_lua*) - 最近 1 分钟内各阶段耗时分布(DNS lookup、upstream connect、response write)
Real-time Flame Graph(需开启采样):
- 点击右上角 “Record CPU Profile” 按钮,持续 30 秒,自动生成 On-CPU 火焰图
- 图中顶部宽色块直接对应高耗时 Lua 函数或 Nginx C 函数(如
ngx_http_lua_ffi_socket_tcp_connect) - 支持按 worker PID 过滤,精准定位某一个异常 worker 的瓶颈函数
关键使用提示
Dashboard 默认每 2 秒自动刷新一次,但以下设置可提升诊断有效性:
- 若发现某 worker CPU 持续高于其他 worker,先检查其绑定的 CPU 核心是否被争抢(可用
taskset -cp查看) - “Requests/sec” 值突降但 “Active Conn” 居高不下,大概率是 upstream 响应阻塞或 Lua 中同步 I/O(如
os.execute) - 火焰图中出现大量
lua_gc或lj_BC_ITERL,说明 Lua 对象生命周期管理不当,需检查 table 复用或闭包泄漏











