性能追踪
Monoceros 当前内部已经包含性能追踪相关组件。对服主来说,你不一定需要直接操作底层追踪器,但你应该知道哪些地方最容易吃性能。
最容易影响性能的模块
| 模块 | 常见风险 |
|---|---|
| 脚本系统 | 高频触发脚本、频繁编译 |
| 分发器 | 监听过多事件、事件链过长 |
| 调度系统 | 高频周期任务太多 |
| 数据包系统 | 同时追踪大量 Tap,甚至启用解析/覆写 |
| 动作工作流 | 节点链过长、延迟链太多 |
服主最该做的优化
1. 降低不必要的触发频率
- 不要把高频事件都直接接复杂脚本
- 周期任务不要设得过密
- 数据包监听只开你真正需要的 Tap
2. 利用缓存和预热
- 关键脚本可以预热
- 通过
/mono script stats观察命中率
3. 拆分职责
- 事件入口只做路由
- 真正复杂逻辑放到脚本或工作流里分层处理
- 不要在一个节点里塞太多职责
性能问题怎么排查
推荐顺序:
/mono debug/mono status/mono diag cache- 临时停掉可疑调度、分发器或脚本任务
一个很实用的经验
Monoceros 的设计已经尽量把能力模块化了,所以你排性能问题时,也应该按模块拆:
- 是脚本问题?
- 是分发器太多?
- 是调度太密?
- 是 Packet Tap 太重?
不要一上来就把所有逻辑一起看,那样很难定位。