Open Profile
简介
Open Profile 是一款专为 StarRocks 数据库(社区版)打造的轻量级、无侵入式 Profile 分析与可视化工具。它能够将动辄数万行、晦涩难懂的分布式文本 Profile,秒级转化为直观的算子执行计划树与性能热力图。帮助 DBA 和开发人员彻底摆脱“人肉 Debug”的痛苦,一眼看清数据流向,精准定位长尾节点、数据倾斜及性能瓶颈。
亮点
-
秒级解析 - 根据查询ID一键导入,瞬间完成万行文本的结构化拓扑化。 -
热点高亮 - 通过颜色矩阵自动标红高能耗算子,瓶颈无处遁形。 -
倾斜透视 - 直观对比多实例(Instances)指标,一眼识破分布式长尾效应。 -
算子分析 - 点击卡片支持获取analyze profile结构,便于分析Fragment。 -
体量压缩 - 工具内部使用gzip将静态文件进行压缩,程序就一个二进制文件轻量运行。
快速开始
步骤一:数据库
# 1. 部署mysql数据库,并创建数据表
CREATE TABLE `starrocks_information_connections` (
`app` varchar(100) NOT NULL COMMENT '集群简称',
`feip` varchar(200) NOT NULL COMMENT 'F5,VIP,CLB,FE',
`user` varchar(200) NOT NULL COMMENT '管理员用户',
`password` varchar(500) NOT NULL COMMENT '管理员密码',
`feport` int(11) NOT NULL DEFAULT '9030' COMMENT '',
`status` int(11) NOT NULL DEFAULT '1' COMMENT '应用配置 0 off, 1 on',
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'CURRENT_TIMESTAMP'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='StarRocks信息表'
# 2. 插入数据
INSERT INTO starrocks_information_connections (app, feip, `user`, password, feport, status) VALUES('sr-test','127.0.0.1', 'chengkenli', 'xxxx', 9030, 1)
# 3. 配置稽核
检查插入的数据必须准确,否则集群连接失败
步骤二:配置文件
# 1. 新建配置文件.open-profile.yaml,填写配置
metadb:
host: localhost
port: 3306
user: root
password: xxxxxx
base: chengken.starrocks_information_connections
web:
port: 19451
log:
line: true
level: 0
path: '/chengken/log'
console: true
步骤三:一键启用(推荐)
# 1. 直接下载二进制文件
https://github.com/chengkenli/open-profile/releases/download/1.0/open-profile
# 2. 启动服务
./open-profile
# 3. 访问应用
open http://localhost:19451
功能简介
在 StarRocks 的日常调优中,复杂的 MPP 架构和 Pipeline 执行引擎会导致生成的原生文本 Profile 极其冗长晦涩。为了解决“文本眩晕”与“排查效率低”的痛点,本工具在无聊之中磨洋工而生。
初次访问
初次打开页面,没提交查询ID前,一片空白。
导入ID
页面居中处,选择集群与提QueryID(注:该查询ID需开启enable_profile=true)将会将原生的 Fragment、Pipeline、PlanNode 文本解构,还原为最直观的算子执行树(Operator Tree)。清晰展示 OlapScanNode、ExchangeNode 到 HashJoinNode 的数据流向与层级依赖。
性能聚焦
自动统计算子的 CPU/内存消耗占比与执行耗时,对核心瓶颈算子进行视觉红牌高亮。无需逐行对比纳秒级时间戳,实现秒级瓶颈定位。
透视读取
通过点击算子卡片,直接读取plan_node_id中的执行计划。其他左右两侧重点提取 Runtime Filter 过滤效果(输入/输出行数对比)、内存溢出落盘(Spill)警告、以及存算分离架构下的本地本地缓存(Cache)命中率等高阶调优指标,辅助精准推演优化器(CBO)的执行决策。
接口读取
支持直接通过url的方式进行请求,这样做的方式是为了更好对接告警通知。如:在企微、飞书告警卡片中嵌入点击按钮,
url填写为:http://localhost:port/prod/集群名称/查询ID
集群名称:mysql表中的app字段值
即可直接打开Opne Profile并完成可视化解析。
其他说明
StarRocks 用户权限配置(重要)
在启动程序之前,配置在mysql表中的账号建议是管理员角色、以及账号需要对表拥有查询权限,否则可能会无法正确获取Profile。可以使用root 账号,程序不会进行任何变更,只做Read行为。



