学完这篇,你能在 Clara BBS 上搭起一套「指标采集 → 周期落库 → 阈值告警」的最小可用性能监控链路,知道每个采集点在哪开、命令怎么配、哪些坑会让数据悄悄失真。
第一步:先把看得见的指标打开
Clara BBS 的性能观测分两层:一层是常态留痕(不用配,装完就在跑),一层是需要手动开启的仪表盘。
先到后台启用「容量监控仪表盘」插件。它每天打一次容量快照,记录帖子数、用户数、附件、数据库体积、磁盘占用,并画出增长曲线。这是你判断「什么时候该加从库、什么时候该换服务器」的唯一硬依据,比拍脑袋准。
同时跑一次环境体检。它会诊断协议层(HTTPS / HTTP2 / TLS / 域名归一)、缓存层(长缓存 / Brotli / H3 广播)、安全层和运行环境(PHP 版本 / 扩展 / 目录权限),未通过项会自动附上已经按你当前域名填好的 Nginx 修复片段,复制即可用。
注意:环境体检里的缓存层未通过,通常不是代码问题,而是 Nginx 没配长缓存或没开 Brotli,别急着去翻 PHP 配置。
第二步:认清系统已经在采集的几张表
Clara BBS 默认就把观测数据写库了,你只需要知道去哪查:在线会话、搜索日志、登录日志、管理日志、审计日志、Cron 运行记录。排查「某个时段变慢」时,在线会话表能告诉你并发从多少开始爬升,搜索日志能告诉你是不是有人在刷搜索。
慢查询则依赖 MySQL 慢日志,必须先确认 slow_query_log 是开启状态,否则仪表盘里的慢查询 TOP 榜永远是空的——这是最常见的「监控没数据」原因。
第三步:缓存层和数据库层的采集点
缓存侧:进后台「系统工具 → 缓存设置」,可视化开启 Redis,不用改代码。榜单、热点数据、外部接口响应统一走 Cache::remember。Redis 异常会自动降级到文件驱动,所以你在监控里看到响应时间阶梯式上升、又没有报错时,先怀疑是不是已经降级了。
数据库侧:读写分离配置后,SELECT / SHOW / DESCRIBE / EXPLAIN 走从库,写走主库。从库连接失败会静默回退主库并记日志——业务零感知是好事,但对监控是坏事:回退期间主库压力会突然变大。所以要把这条日志纳入你的日常巡检项。
第四步:用计划任务把采集变成周期动作
Clara BBS 的计划任务用 Cron::register 统一注册,运行结果落库可查,带文件锁防并发重跑。
两种触发方式:
- 前台访问懒触发,零配置,装完就有,适合小站;
- 外部入口
/cron 精准触发。流量大的站建议配系统级 crontab:
* * * * * curl -s https://你的域名/cron > /dev/null 2>&1
把容量快照、GEO 健康体检这类任务挂上去,数据才是连续的。
注意:文件锁是防重跑的保护,但也意味着上一轮没跑完时这一轮会被跳过。如果你的 cron 每分钟一次、而某个任务要跑两分钟,实际频率就是两分钟一次——排任务时算好单次耗时。
第五步:阈值与告警怎么配
系统内置的是采集、留存和阈值可视化:容量仪表盘有阈值进度条和外推预估(按当前增速推算多久后需要升级架构),慢查询 TOP 榜给出最耗时的 SQL。
真正的消息推送,靠两层组合:
- 业务层:把「数据库体积超过阈值」「慢查询条数突增」写成计划任务里的判断逻辑,超阈值时调你自己的推送接口;
- 基础设施层:用宝塔自带监控或外部探活工具盯 502 / 响应时间 / 磁盘,这类故障往往先于业务指标暴露。
阈值建议先按「当前值 × 1.5」设第一档、× 2 设第二档,跑两周再按曲线斜率修正。
注意:告警只看绝对量容易误报。帖子数涨了但磁盘没涨、数据库没涨,说明增长是文本而非附件,没必要升级存储。
小结
- 先开容量监控仪表盘和环境体检,拿到基线数据再谈优化;
- 慢查询 TOP 榜依赖 MySQL 慢日志开启,没数据先查
slow_query_log;
- 缓存降级、从库回退都是静默的,必须主动看日志,否则监控会骗你;
- 计划任务用
/cron + crontab 每分钟触发,注意文件锁会让任务被跳过;
- 系统提供阈值可视化,消息推送要自己接计划任务或外部监控补上;
- 阈值先按当前值 1.5 倍 / 2 倍设两档,两周后按曲线修正。