性能与插件分析
推荐排查顺序
- 选取问题发生的时间范围,查看请求量、延迟和错误率是否一起变化。
- 检查慢路由排行,确定异常集中在哪些接口;P95、P99、平均耗时、最大耗时、请求量和错误指标可用于不同角度的排序。
- 对照插件请求影响排行和持续高消耗插件,判断是请求处理、后台线程还是其他资源信号值得继续关注。
- 点击插件名称进入详情,查看资源趋势、慢接口、事件和基线对比。
- 需要调用栈或日志证据时,再到诊断手动查询。
插件排行的两种视角
请求影响排行依据归属于插件 API 的请求量、耗时和错误等信号。它不能代表插件的全部后台任务成本,也不能通用地把每个前台页面渲染都归属于某个插件。
持续高消耗插件结合 CPU 时间、分配内存、线程与请求耗时,估算资源压力。可展开「评分依据」查看各维度的分数、加权贡献和强度系数。
CPU 份额与内存分配
CPU 份额表示插件归因 CPU 耗时占采样线程总 CPU 耗时的比例。其他线程消耗很低时,一个插件的份额可能较高,这不等于它占用了同样比例的整机 CPU。请同时查看总览的 Halo 进程 CPU 和线程诊断中的单核 CPU。
分配速率表示一段时间内新分配的内存,不是插件当前持有的内存,也不能单独证明内存泄漏。共享线程无法可靠归属时不会强行分配给某个插件;采样覆盖、JVM 计数支持情况和归因置信度都会影响结果。
压力评分
压力评分范围为 0–100,由最高维度分的 75% 加上四维平均分的 25% 组成;最高维同分时平分最高维的贡献。
CPU、分配量、请求耗时的强度分别在单核 10%、64 MiB/min 和累计 15 秒/min 时达到 1。线程维度还考虑驻留线程数与驻留分钟比例。「强度系数」和最终「压力评分」不是同一数值。
常驻线程本身会贡献评分:4 个线程持续驻留、其他维度为零时仍可能约为 9.1 分。请区分「CPU 活动分钟」和「线程驻留分钟」,不要把线程一直存在理解为线程一直忙碌。
单插件诊断
在性能页任一插件排行中点击插件名称,按所选时间范围查询:
基线对比怎么用
对比使用完整分钟;最近升级前后会排除升级所在分钟。升级后的窗口尚未积累完成时,需要等待。升级时间以 Insight 已记录的版本变化事件为准,没有记录时不会猜测时间。
资源覆盖不足 75% 或不足 3 分钟、请求量或采样密度相差超过 25% 时,会提示对比限制。昨天或上周的窗口不能相互重叠,超长范围需要缩短。无请求时 P95 不可用,计数缺失也不会按零处理。
对比用于发现变化,不能证明变化由插件升级引起。流量、其他插件操作、缓存和环境负载都可能影响结果。
停用插件前后观察
从性能页的插件建议选择停用时,Insight 先保存最近 5 个完整分钟的基线,再调用 Halo 官方启停接口。确认实际停用后,从下一完整分钟观察 5 分钟,再等待约 30 秒聚合落盘,生成对比报告。
报告比较进程 CPU、平均堆、GC 时间占比和请求 P95,并展示请求量与采样覆盖。「诊断 → 优化效果」保存报告,并提供重新启用入口。
停用插件可能影响该插件的业务,需要确认,并同时拥有运行洞察管理权限和 Halo 原生插件管理权限。先确认它是否提供当前站点依赖的功能。
无流量、采样不足或跨进程重启时,结果可能无法得出有效结论。观察中提前启用会中断观察;Insight 重启会把未完成观察标为中断。如果停用后的确认接口失败,请到 Halo 插件管理页检查实际状态,插件可能已经停用。