1. 概述
1.1 版本
| 运维平台版本 | 功能变更 |
|---|---|
| V1.5.5 | - |
| V1.5.7 | 1)运维平台日志管理功能拆分优化 2)对于集群多节点工程,支持单次下载多节点日志文件 |
| V1.8.0 | 分析日志中,分析记录列表新增展示「触发类型」 |
| V1.12.0 | 1)支持手动上传本地性能堆栈,至运维平台进行分析 2)支持展示历史性能堆栈生成记录 3)性能堆栈使用顺序优化,变更为:分析>下载>生成 |
| V1.14.0 | 运维平台监测宕机,自动触发生成日志条件优化 1)应用无响应触发时间由3分钟优化为2分钟 2)新增FullGC触发条件:5min内FullGC次数总和大于3次,且时间总和超过 50s |
| V1.15.0 | 下载日志时,支持按需选择日志类型,无需全量下载,降低下载成本 |
| V2.0.0 | 性能分析结果优化,新增「内存情况划分」 |
| V2.1.0 | 1)在项目不可用情况下,仍支持生成、分析、下载性能堆栈 2)优化分析报告,拆分内存和CPU信息,优化GC状态展示 |
| V2.14.0 | 性能分析结果优化,新增「内存负载情况」 |
| V2.20.0 | 高 CPU 占用触发生成堆栈时,根据帆软/非帆软进程优化生成逻辑 |
1.2 应用场景
当工程出现宕机或异常时:
1)管理员需要快速生成堆栈日志,以确保事后有办法复盘定位问题。
2)管理员需要对堆栈日志进行分析,追踪问题产生的根本原因,但日志分析对管理员的技术水平要求较高。
3)管理员需要将堆栈日志拿到本地自行分析,或提供给帆软技术支持人员确认问题,但很多公司日志获取费时费力。
运维平台提供「性能堆栈」功能,支持对堆栈日志进行快速生成、智能分析、便捷下载。

1.3 日志简介
性能堆栈功能支持对以下堆栈日志进行生成、分析和下载:
| 日志 | 说明 |
|---|---|
| fanruan.gc.log | 帆软宕机日志 |
| thread.txt | 线程信息统计报告,包含所有线程的状态和堆栈跟踪信息,可帮助了解应用程序的线程使用情况,及时发现和解决线程问题 |
| histo.txt | 内存使用情况统计报告,包含对象的数量、大小、占用空间等信息,可帮助了解应用程序的内存使用情况,及时发现和解决内存泄漏等问题 |
| hs_err.txt | Java 在运行过程中遇到错误时自动生成的错误报告文件,包含详细的错误信息、堆栈跟踪信息、线程信息等,可帮助定位和解决代码问题 |
| top.txt | Linux 系统 top 命令的输出结果,包含以下三个文件:
|
gc.log | JVM 的垃圾回收日志文件,记录每次 GC 发生的时间、回收类型、回收前后堆内存变化、各阶段耗时以及是否发生 Full GC 等信息,主要用来分析内存使用情况、GC 频率、停顿时间和性能问题 |
| safepoint.log | JVM 记录“让所有 Java 线程暂停到安全点”这一过程的日志 用于观察垃圾回收、偏向锁撤销、线程栈检查等全局操作带来的停顿 通常会显示为什么触发暂停、让线程停下来花了多久、真正执行 JVM 操作花了多久、总共暂停了多久,在排查 Java 应用偶发卡顿、延迟抖动时很有用。 |
2. 分析日志
应用场景: 当工程宕机后,管理员需要对宕机日志进行分析,修复工程存在的问题,防止再次发生。 FineOps运维平台支持对jstack、histo、gc和top-H内容进行分析,帮助用户分析错误堆栈并给出相关改进意见。
2.1 自动分析运维项目
当满足第 4.1 节的自动生成日志条件后,运维平台会对每个节点自动生成的堆栈日志进行分析。
查看步骤:
1)管理员登录运维平台,点击「项目管理」,选择指定运维项目。
2)进入「日志 > 性能堆栈」页面,在「分析」模块下查看自动分析结果。

2.2 手动分析运维项目
操作步骤:
1)管理员登录运维平台,点击「项目管理」,选择指定运维项目,进入「日志 > 性能堆栈」页面。
2)在「分析」模块下,点击「分析」按钮,触发该运维项目下每个节点生成堆栈日志。
3)运维平台对每个节点生成的堆栈日志进行分析,分析结果生成在分析记录中。
注意事项:
每 1 分钟仅支持进行 1 次分析,以防频繁触发导致系统性能下降。若请求过于频繁,提示「分析请求太频繁啦,请稍等一分钟后再重新尝试」。

2.3 手动上传日志分析
用户可手动上传本地堆栈日志到运维平台进行分析。
1)准备本地堆栈日志包
仅支持 .zip/.tar/.gz 格式压缩包,请务必准备标准的 jstack -l 堆栈
日志包大小不可超过 100MB
2)上传本地堆栈日志包
管理员登录运维平台,点击「项目管理」,选择运维项目,点击「日志 > 性能堆栈」。
在「分析」模块下,点击「上传性能堆栈分析」按钮,选择本地日志包,点击「打开」。
3)生成分析报告
运维平台根据压缩包中的 jstack、histo、gc 和 top-H 内容生成分析报告,仅支持同时分析一个节点。
分析结果在新标签页打开,不记录在分析记录中。

2.4 查看分析记录
操作步骤:
1)管理员登录运维平台,点击「项目管理」,选择运维项目,点击「日志 > 性能堆栈」。
2)在「分析 > 分析记录」模块下,以明细表形式查看该运维项目下所有手动/自动触发的堆栈分析结果(不包括手动上传的日志分析记录)。
分析记录说明:
1)明细表展示内容包括:项目名、节点名、触发类型、操作时间、操作者、操作 IP、分析结果。若为自动触发,操作者和操作 IP 显示为空。
2)若运维项目为集群环境,每个节点都会生成一份分析结果。
3)历史记录最多保留最近 50 条,支持单条删除、批量删除和清空全部。
4)点击分析记录中的「查看」按钮,即可在新标签页打开具体的分析结果。

分析结果说明: 性能堆栈分析结果分为两个部分:
内存状态详情:包含 GC 状态和内存状态。

线程 CPU 状态详情:展示线程 CPU 使用情况。

3. 下载日志
应用场景:
当工程宕机后,管理员需要将宕机日志拿到本地自行分析,或提供给帆软技术支持人员,帮助确认工程存在的问题,防止再次发生。
操作步骤:
| 序号 | 操作步骤 | 注意事项 |
|---|---|---|
| 1 | 管理员登录运维平台,点击「项目管理」,选择运维项目 点击「日志>性能堆栈」 | |
| 2 | 选择时间范围 | 可选范围:7天前~当前日期,所选时间跨度不可超过2天(48小时) 默认时间:2小时前~当前时间 |
| 3 | 选择服务类型 | 支持类型:fr、fdl、bi-web、bi-engine-master、bi-engine-worker、bi-engine-worker-monitor 可选范围:所选时间内存在的服务类型,默认全选 注意事项: 1)非运维平台部署的项目不支持选择服务类型 2)如不存在任一类型,则不出现该选项 |
| 4 | 选择节点 | 可选范围:所选运维项目中的所有节点,默认全选 |
| 5 | 选择需下载的日志 | 支持类型: 支持下载第 4 章生成的日志,包括 fanruan.gc.log、thread.txt、histo.txt、hs_err.txt、top.txt 注意事项: 1)如不存在某种类型的日志,则不支持下载该类型日志 2)运维平台部署且已安装 ElasticSearch 组件的项目,不支持单独选择日志类型,直接全量下载 |
| 6 | 点击「下载」,生成运维日志文件到本地电脑 | 1)若文件大小超过 5GB,则无法导出,提示「以下日志大小超过上限(5GB),不支持下载:xxx」 2)若该类型日志文件不存在,则无法导出,提示「以下日志不存在:xxx」 3)日志下载时需要进行压缩,若等待时间过长,可点击「取消下载」按钮停止下载 4)下载的文件解压后,按照「节点 - 日期 - 服务类型 - 日志类型」结构存放 |

4. 生成日志
应用场景:
当工程宕机或出现异常时,堆栈日志可以帮助管理员快速定位问题所在的代码。
当工程出现性能问题(如响应时间过长或CPU占用过高)时,堆栈日志可以帮助管理员理解程序的执行路径,找到可能的性能瓶颈。
当工程出现内存问题时,histo日志可以帮助管理员快速地锁定问题方向,追踪问题产生的根本原因。
运维平台支持手动/自动生成堆栈和histo日志。
4.1 自动触发
1)触发自动生成日志
以下情况,均会触发自动生成日志。
| 情况 | 说明 |
|---|---|
| 宕机触发生成日志 | 当该运维项目出现以下情况时,自动触发生成日志 CPU占用超过80%(主要由帆软应用fr、fdl、bi-web、bi-worker导致):生成堆栈和top日志 CPU占用超过80%(主要由服务器中其他非帆软进程导致):生成top日志 发生超过30S的GC(fr、fdl、bi-web、bi-worker、bi-master):生成堆栈和histo 应用2分钟无响应(fr、fdl、bi-web、bi-worker、bi-master):生成堆栈和histo 线程池用量达到85%(fr、fdl、bi-web、bi-worker):生成堆栈 连续FullGC后依旧负载较高(连续5次FullGC且负载分大于100)(fr、fdl、bi-web、bi-worker、bi-master):生成堆栈和histo 5min内FullGC次数总和大于3次,且时间总和超过 50s(fr、fdl、bi-web、bi-worker、bi-master):生成堆栈和histo 用户可预设自动生成的日志类型
|
| 手动分析日志触发 | 管理员登录运维平台,点击「项目管理」,选择指定运维项目。 进入「日志>性能堆栈」页面,当手动点击「分析」按钮时,会先自动触发生成一份堆栈日志。
|
2)「自动生成」的日志
当满足上文条件后,自动触发该运维项目下每个节点生成堆栈日志。
根据项目部署方式和所选服务类型,日志生成在不同位置
| 部署方式 | 服务类型 | |
|---|---|---|
| 运维平台部署的项目 | fr | 有问题组件所在服务器的项目挂载目录fanruanxxx/fr/tomcat_logs/FineLog/日期文件夹内 |
| fdl | 有问题组件所在服务器的项目挂载目录fanruanxxx/fdl/tomcat_logs/FineLog/日期文件夹内 | |
| bi6 | 有问题组件所在服务器的项目挂载目录fanruanxxx/bi6/tomcat_logs/FineLog/日期文件夹内 | |
| bi-web | 有问题组件所在服务器的项目挂载目录fanruanxxx/bi-web/tomcat_logs/FineLog/日期文件夹内 | |
| bi-engine-master | 有问题组件所在服务器的项目挂载目录fanruanxxx/bi-master/polars/logs/FineLog/日期文件夹内 | |
| bi-engine-worker | 有问题组件所在服务器的项目挂载目录fanruanxxx/bi-engine-worker_x/polars/monitor/logs/FineLog/日期文件夹内 | |
| bi-engine-worker-monitor | 有问题组件所在服务器的项目挂载目录fanruanxxx/bi-engine-worker_x/polars/monitor/logs/FineLog/日期文件夹内 | |
| 非运维平台部署的项目 | - | 当前运维项目有问题的节点所在服务器 %Tomcat%/logs/FineLog/日期文件夹内 |
4.2 手动生成
1)管理员登录运维平台,点击「项目管理」,选择运维项目,点击「日志>性能堆栈」。
2)在「生成>手动生成」模块下,选择服务类型。
支持类型:fr、fdl、bi-web、bi-engine-master、bi-engine-worker、bi-engine-worker-monitor
可选范围:当前运维项目所有节点中存在的服务类型;非容器化运维项目不支持选择服务类型;如不存在任一类型,则不出现该选项。
3)点击「生成」,触发该运维项目下每个节点生成堆栈日志。
4)生成的文件位置为:
根据项目部署方式和所选服务类型,日志生成在不同位置
| 部署方式 | 服务类型 | |
|---|---|---|
| 运维平台部署的项目 | fr | 有问题组件所在服务器的项目挂载目录fanruanxxx/fr/tomcat_logs/FineLog/日期文件夹内 |
| fdl | 有问题组件所在服务器的项目挂载目录fanruanxxx/fdl/tomcat_logs/FineLog/日期文件夹内 | |
| bi6 | 有问题组件所在服务器的项目挂载目录fanruanxxx/bi6/tomcat_logs/FineLog/日期文件夹内 | |
| bi-web | 有问题组件所在服务器的项目挂载目录fanruanxxx/bi-web/tomcat_logs/FineLog/日期文件夹内 | |
| bi-engine-master | 有问题组件所在服务器的项目挂载目录fanruanxxx/bi-master/polars/logs/FineLog/日期文件夹内 | |
| bi-engine-worker | 有问题组件所在服务器的项目挂载目录fanruanxxx/bi-engine-worker_x/polars/monitor/logs/FineLog/日期文件夹内 | |
| bi-engine-worker-monitor | 有问题组件所在服务器的项目挂载目录fanruanxxx/bi-engine-worker_x/polars/monitor/logs/FineLog/日期文件夹内 | |
| 非运维平台部署的项目 | - | 当前运维项目有问题的节点所在服务器 %Tomcat%/logs/FineLog/日期文件夹内 |
注意事项:
每 1 分钟仅支持生成 1 次堆栈,以防频繁触发导致系统性能下降。

4.3 生成记录
在「生成 > 生成记录」模块下,以明细表形式展示所有自动/手动触发的历史生成记录。
包含以下信息:节点名、导出内容、导出开始时间、导出时长、触发类型、是否成功、失败原因。

