Flink 交互式性能剖析(Profiler)实战指南:基于 async-profiler 的 JobManager/TaskManager 在线采样
大数据流处理批处理数据工程【免费下载链接】flink项目地址https://gitcode.com/gh_mirrors/fli/flink点击查看免费下载自 Flink 1.19 起Flink 通过 Web UI 集成了 async-profiler 为主体结合仓库中的 REST 配置项、ProfilingService实现与 Web Dashboard 源码完整讲解该功能的启用方法、五种剖析模式的差异、Web UI 操作流程、结果文件管理以及常见故障排查帮助你快速定位生产环境中的 CPU、锁竞争、内存分配等性能瓶颈。功能概览与工作原理Flink Profiler 是一个**可选opt-in**的实验性功能。其核心工作链路位于 ProfilingService.java用户在 Web UI 上发起剖析请求后前端通过 REST API 将duration时长秒与mode剖析模式提交给 JobManager 或对应 TaskManager 的 REST Handler后端调用AsyncProfiler.getInstance().execute(start,eventmode)启动剖析剖析时长到期后ProfilingFuture中的定时任务flink-profiling-service单线程调度器触发stop,file输出路径停止剖析并写出结果文件结果以 HTML 文件形式存储用户可直接在 Web UI 上点击链接下载查看。该服务以单例形式运行同一时刻每个组件只允许存在一个运行中的剖析实例若在剖析未结束时再次发起请求requestProfiling会直接返回异常提示见 ProfilingService.java。从源码结构看剖析请求链路覆盖了 REST 消息定义ProfilingRequestBody、HandlerJobManagerProfilingHandler 与 TaskManagerProfilingHandler以及 ResourceManager 到 TaskExecutor 的 RPC 转发前后端闭环完整。启用 Profiler相关配置详解任何测量过程本身都会不可避免地影响被测量对象。为了防止对生产环境造成意外影响Profiler 默认是关闭的需要显式开启。在 Flink 配置文件conf/flink-conf.yaml中设置rest.profiling.enabled: true建议在开发与预生产环境启用若要在生产环境使用应将其视为实验性功能并谨慎评估影响。围绕该功能RestOptions.java 中还定义了以下可调参数均归属Expert REST配置分区配置项类型默认值说明rest.profiling.enabledBooleanfalse启用实验性 Profiler 功能即本功能的开关rest.profiling.history-sizeInteger10JobManager 或每个 TaskManager 维护的最大剖析历史实例数超过后按滚动策略移除最旧实例rest.profiling.duration-maxDuration300 s单次剖析请求允许的最大时长超过该值的请求将被拒绝rest.profiling.dirStringjava.io.tmpdir系统临时目录剖析结果文件的存储目录时长上限的强制校验REST Handler 在收到剖析请求时会先校验duration是否满足0 duration rest.profiling.duration-max不满足则直接抛出IllegalArgumentException见 TaskManagerProfilingHandler.java。Web UI 前端默认提供 30 秒的初始时长步进 30 秒最小值 1 秒。历史与结果文件管理ProfilingService用ArrayDequeProfilingInfo按组件resourceID维护剖析历史当队列长度超过rest.profiling.history-size时会通过rollingClearing删除最旧的输出文件以回收磁盘空间见 ProfilingService.java。输出文件命名格式为resourceID_mode_yyyy-MM-dd_HH_mm_ss.html见 ProfilingService.java因此可依据文件名直观判断剖析对象、模式与时间。支持的剖析模式Profiler 支持五种事件模式对应 ProfilingInfo.java 中的枚举CPU / ALLOC / LOCK / WALL / ITIMER内部通过name().toLowerCase()转为 async-profiler 的event参数。各模式语义如下CPU收集包含 Java 方法、native 调用、JVM 代码和内核函数的调用栈采样。适用于定位 CPU 密集热点。Allocation分配剖析模式下每条调用栈的栈顶帧为被分配对象的类计数器为堆压力分配的 TLAB 或 TLAB 之外对象的总大小。适用于定位内存分配热点与高频对象创建。Wall-clockWall-Clock 模式让 async-profiler忽略线程状态每隔固定周期对所有线程Running、Sleeping、Blocked一视同仁地采样。例如可用于剖析应用启动阶段的时间开销。Lock锁剖析模式下栈顶帧为锁/监视器lock/monitor的类计数器为进入该锁/监视器所花费的纳秒数。适用于定位锁竞争与阻塞问题。ITIMER当无法使用perf_events时可回退到 ITIMER 模式。它与 CPU 模式类似但不要求perf_events支持缺点是没有内核栈轨迹仅能看到用户态调用栈。平台要求由于 Profiler 由 async-profiler 驱动其运行平台必须受 async-profiler 支持官方维护的构建其他可用移植版本Linuxx64、arm64x86、arm32、ppc64le、riscv64、loongarch64macOSx64、arm64在上述清单之外的平台上进行剖析会失败错误信息会显示在剖析列表的Message列中。通过 Flink Web UI 使用 ProfilerFlink 用户可以完全通过 Web UI 完成剖析的提交与结果导出操作便捷定位目标组件在 Flink Web UI 中找到存在性能瓶颈的候选 TaskManager / JobManager切换到对应的组件详情页Profiler标签页。Web Dashboard 中对应的页面组件分别为 task-manager-profiler.component.html 与 job-manager-profiler.component.ts。创建剖析实例点击Create Profiling Instance按钮即可提交一个指定时长与模式的剖析实例。表单中可选择Profiling Duration剖析时长秒前端默认为 30步进 30最小 1受后端rest.profiling.duration-max上限约束Profiling ModeCPU / Lock / Wall-Clock / Allocation / ITIMER 五种模式下拉选择将鼠标悬停在对应模式上会显示该模式的语义说明tooltip 文案与官方文档一致见 task-manager-profiler.component.html。下载结果剖析实例完成后在剖析列表中点击结果链接即可下载交互式 HTML 文件火焰图可离线放大、检索与定位热点调用栈。剖析列表以表格形式展示每行包含Index、Trigger Time触发时间、Finished Time完成时间、Profiling Duration、Mode、Status、Link结果文件下载链接、Message状态信息等字段见 task-manager-profiler.component.html。剖析实例的状态机定义在 ProfilingInfo.java 中RUNNING剖析进行中此时 Web UI 会拒绝再次创建实例前端提示 Please wait for last profiling finished.FINISHED剖析成功Message为 Profiling SuccessfuloutputFile指向可下载的结果文件FAILED剖析失败Message携带具体失败原因如启动/停止剖析失败的错误响应。若功能未启用rest.profiling.enabled为 falseProfiler 页面会显示警告横幅提示需要先设置该配置见 task-manager-profiler.component.html。Troubleshooting常见故障排查1. CPU 模式剖析失败No access to perf events. Try --fdtransfer or --all-user option or sysctl kernel.perf_event_paranoid1该错误表示perf_event_open()系统调用失败。默认情况下Docker 容器会限制对perf_event_open系统调用的访问。推荐解决方案回退到 ITIMER 剖析模式。它与 CPU 模式类似但不要求perf_events支持代价是没有内核栈轨迹。2. Allocation 模式剖析失败No AllocTracer symbols found. Are JDK debug symbols installed?分配剖析需要 OpenJDK 调试符号debug symbols。请参考 async-profiler 官方文档中 Installing Debug Symbols 一节安装对应 JDK 的调试符号后重试。更多异步剖析器自身的异常场景可参考 async-profiler 官方文档的 Troubleshooting 页面可通过 Web UI Profiler 页面的信息图标链接直达 async-profiler 的 Wiki。实践建议先验证再上生产Profiler 是实验性功能务必先在开发/预生产环境验证其对业务的影响与结果质量再决定是否在生产启用优先 CPU 与 Wall-clock大多数性能问题先用 CPU 模式定位计算热点启动耗时类问题如作业启动、恢复阶段改用 Wall-clock 模式更合适锁问题用 Lock 模式当怀疑线程阻塞、锁竞争时Lock 模式能直接给出进入锁/监视器耗时最大的调用栈内存热点用 Allocation 模式定位高频对象分配时使用同时注意确保 JDK 调试符号已安装容器环境注意权限Docker/Kubernetes 等容器化部署默认限制perf_event_open可直接采用 ITIMER 模式规避管理好结果目录关注rest.profiling.dir指向的磁盘空间与rest.profiling.history-size的滚动清理策略避免长时间高频剖析导致结果文件堆积。通过以上配置、操作与排查手段你可以在不重启集群的前提下对 Flink 的 JobManager 与 TaskManager 进行细粒度的在线剖析快速定位 CPU、锁、分配与时钟相关的性能瓶颈。赞分享大数据流处理批处理数据工程【免费下载链接】flink项目地址https://gitcode.com/gh_mirrors/fli/flink点击查看免费下载相关推荐Flink Web UI 交互式 Profiler 使用指南基于 async-profiler 剖析 JobManager / TaskManagerFlink Web UI 交互式 Profiler 使用指南基于 async profiler 剖析 JobManager / TaskManager 自 F大数据流处理批处理数据工程Apache Spark JVM Profiler 插件基于 Async Profiler 的 Executor/Driver 代码剖析实战指南Apache Spark JVM Profiler 插件基于 Async Profiler 的 Executor/Driver 代码剖析实战指南 本文围绕 A大数据数据分析批处理流处理机器学习图计算Arthas profiler 命令实战指南基于 async-profiler 的火焰图与性能分析Arthas profiler 命令实战指南基于 async profiler 的火焰图与性能分析 导读 profiler 是 Arthas 提供的性能分析命开发工具可观测性调试器性能剖析上一篇XMRig v6.x 版本演进全景解读从 RandomX v2、RISC-V 支持到 GhostRider 的统一 CPU/GPU 挖矿技术路线图下一篇PyTorch语义分割配置文件解析JSON格式的完整参数说明指南 创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

毕业生实习管理系统部署实战:从解压到跑通全流程避坑指南

毕业生实习管理系统部署实战:从解压到跑通全流程避坑指南

简介:毕业生实习管理系统是一套面向高校、企业、教师和学生的信息化管理平台,针对传统实习流程中岗位信息分散、申请审批繁琐、过程跟踪困难等痛点,提供从学生注册、岗位浏览、实习申请、日志提交,到教师审核指导、企业岗位发布、…

2026/9/25 8:47:09 阅读更多 →
Atlas 300V 24G推理加速卡解析与YOLO部署实战

Atlas 300V 24G推理加速卡解析与YOLO部署实战

这几天在技术社区刷到一个挺典型的提问:atlas 300v 24g 是运算加速卡吗。底下回答有说算的,有说只是推理卡的,还有直接丢官网链接的,但基本都没讲到点子上。结合另一个热搜词"atlas部署yolo",我猜很多朋友其…

2026/9/25 8:46:08 阅读更多 →
奈奎斯特定理与香农定理:采样率与信道容量如何决定系统上限

奈奎斯特定理与香农定理:采样率与信道容量如何决定系统上限

干过通信、音频、图像处理的朋友,应该都绕不开这两条定理。不管是设计基站的物理层,还是调一套音频采样链路,最终都会被问到同一个问题:你这个系统的上限在哪?要回答这个问题,就要回到奈奎斯特定理和香农定…

2026/9/25 8:46:08 阅读更多 →

最新新闻

Protractor 快速入门:安装、首个 E2E 测试与 Spec/Config 文件实战指南

Protractor 快速入门:安装、首个 E2E 测试与 Spec/Config 文件实战指南

测试 【免费下载链接】protractor E2E test framework for Angular apps 项目地址: https://gitcode.com/gh_mirrors/pr/protractor 点击查看 免费下载 Protractor 是面向 Angular(含 AngularJS)应用的端到端测试框架,基于 Node.…

2026/9/25 12:08:25 阅读更多 →
NgRx ComponentStore 生命周期钩子详解:provideComponentStore、OnStoreInit、OnStateInit 与 OnDestroy 完整机制

NgRx ComponentStore 生命周期钩子详解:provideComponentStore、OnStoreInit、OnStateInit 与 OnDestroy 完整机制

前端状态管理 【免费下载链接】platform Reactive State for Angular 项目地址: https://gitcode.com/gh_mirrors/pl/platform 点击查看 免费下载 本文基于 NgRx 官方文档《ComponentStore — Lifecycle》一文展开,系统讲解 ngrx/component-store 中组件…

2026/9/25 12:08:25 阅读更多 →
KMP全栈开发:从Android到AI Agent,用TaoToken统一Key打通Koog与MCP配置

KMP全栈开发:从Android到AI Agent,用TaoToken统一Key打通Koog与MCP配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 12:08:25 阅读更多 →
HuggingFace模型下载全攻略:CLI、Python API与国内镜像加速

HuggingFace模型下载全攻略:CLI、Python API与国内镜像加速

去年这个时候,我被同事问得最多的问题还不是“怎么写训练代码”,而是“这个模型怎么从HuggingFace拖下来”。明明import torch都学会了,卡在下载这一步上的人一抓一大把——有人用浏览器一个个点文件,有人直接git clone拉仓库&…

2026/9/25 12:08:25 阅读更多 →
8万条VLA数据不够用?TaoToken统一Key接入Cline跑通自动驾驶极端场景微调

8万条VLA数据不够用?TaoToken统一Key接入Cline跑通自动驾驶极端场景微调

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 12:08:25 阅读更多 →
无锡热门的彩钢瓦防腐蚀工程服务商推荐:学校与化工厂项目案例实力盘点

无锡热门的彩钢瓦防腐蚀工程服务商推荐:学校与化工厂项目案例实力盘点

Q1:现在无锡哪里能找到比较好的彩钢瓦防腐蚀工程公司?很多工业制造企业、仓储园区的负责人,面对老旧彩钢瓦屋面的锈蚀漏水问题,第一个疑问往往都是这个。在长三角工业产业密集的无锡,大大小小的施工团队不少,但能真正…

2026/9/25 12:07:25 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/25 11:15:26 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →