文章目录

  • 现象
  • 分析
    • 猜想1
    • 猜想2
    • 猜想3
    • 猜想4,确认代码变化
  • 思考
    • 大招(火焰图)
    • On-cpu
    • off-cpu 图
    • 分析
  • 火焰图
    • 火焰图示例代码
    • 生成火焰图
    • 如何看
    • 回到最开始的问题
  • 总结

现象

team新发版一个Flink作业,在老作业上有修改,做发版前最后的验证发现,Fliink作业有反压的现象,有算子报红,查看topic 消费者组有lag

分析

当时的现象类似下图,最后一个点显示busy max 100%

猜想1

数据倾斜
并行度是3,看了下每个task 处理数据量比较均匀

猜想2

调用外部接口耗时长
使用arthas trace 接口发现耗时都是20ms 左右

猜想3

taskmanager 节点频繁GC ,导致停顿
查看task 节点GC 次数和耗时正常

猜想4,确认代码变化

确认代码变动很少? 应该不是代码问题

思考

几板斧下来,感觉还是没看到问题在哪

大招(火焰图)

调整配置,把火焰图打开
rest.flamegraph.enabled : true

On-cpu

查看On-cpu 火焰图类似如下

off-cpu 图

分析

程序中没有锁相关的,所以先不考虑off-cpu

从on-cpu来看,很显示作业大部分的cpu 都在执行socket 代码
这里当时没注意,后来发现其实不应该有很多时间执行这个代码,至于为啥会调socket ,从上往下看是因为程序里去调一个外部的http接口导致的。
正常逻辑这个接口的频率不应该很高,说明代码变动有问题,再次确认代码变动确认有问题,修复代码后重新上线后,任务正常,也没有lag,总是解决。

火焰图

火焰图示例代码

public class HotTest {public static void main(String[] args) {run();}private static void run() {runA();runB();}private static void runB() {for (int i = 0; i < 300000; i++) {System.out.println("this is b");}}public static void runA() {runC();for (int i = 0; i < 500000; i++) {System.out.println("this is a");}}private static void runC() {for (int i = 0; i < 200000; i++) {System.out.println("this is c");}}}

idea 上执行

生成火焰图

如何看

y轴代码函数调用的深度
x轴宽度代表函数采样次数,可以简单为耗时
从火焰图来看
run 函数耗时=runA()+runB()
runA 函数耗时=runC()+打印
所以这个图虽然看起来很复杂,分析问题时,只需要看所有最顶层的函数的宽度即可,再根据最宽的函数从上往下找下,是哪个业务在执行这个,分析即可

回到最开始的问题

大部分的cpu 都在执行socket 代码,socket 代码是因为频繁调接口导致,最后发现这里有问题导致。

总结

火焰图在分析性能场景中,确认非常方便,以后要加强这方面学习。

火焰图分析Flink反压相关推荐

  1. Flink反压如何排查

    Flink反压利用了网络传输和动态限流.Flink的任务的组成由流和算子组成,那么流中的数据在算子之间转换的时候,会放入分布式的阻塞队列中.当消费者的阻塞队列满的时候,则会降低生产者的处理速度. 如上 ...

  2. mysql火焰图_【性能】如何使用perf和火焰图分析系统性能?

    一.实验环境 二.实验案例分析 安装完成后,我们先在第一个终端,执行下面的命令运行案例,也就是一个最基本的 Nginx 应用: 运行 Nginx 服务并对外开放 80 端口 # docker run ...

  3. python生成分析图_Pyflame 生成火焰图分析 Python 程序

    Pyflame 生成火焰图分析 Python 程序 后台回复[入门资料] 送你十本Python电子书 文 | EarlGrey 推荐 | 编程派公众号 微信号:codingpy Pyflame 是 U ...

  4. ali arthas 火焰图_使用arthas 生成火焰图分析jvm

    arthas 是阿里巴巴开源的强大的jvm 应该分析工具,以下是使用arthas 生成jvm 火焰图的一个学习 项目使用docker-compose 运行,对于生成的火焰图使用nginx 提供一个访问 ...

  5. 【Flink】Flink 反压机制 导致checkpoint 失败

    1.概述 转载:flink检查点checkpoint失败问题总结-2 问题描述:检查点刚开始是可以的做checkpoint的,后期越来越不能够做checkpoint的情况总结 2.反压问题 2.1 什 ...

  6. 【Flink】Flink反压(背压)网络流控

    1.美图 2.概述 界面查看:Flink UI: Flink 1.10 如何查看 数据源 的背压(反压)情况(消费kafka) 为了判断是否进行反压,jobmanager会每50ms触发100次sta ...

  7. java 性能调优,使用 async-profiler + FlameGraph火焰图 分析cup消耗热点代码

    参考文章 https://www.jianshu.com/p/9364028cca4e 目的:通过分析工具找到项目中占用cpu时间最长的代码片段,优化热点代码,达到优化内存的效果. 1.准备工具,从g ...

  8. 性能瓶颈查找-火焰图分析

    什么是火焰图 ⽕焰图仅⽤⼀张⼩图,就可以定量展示所有的性能瓶颈的全景图,⽽不论⽬标软件有多么复杂. 传统的性能分析⼯具通常会给⽤户展示⼤量的细节信息和数据, ⽽⽤户很难看到全貌,反⽽容易去优化那些并不 ...

  9. perf + 火焰图分析程序性能

    From: https://www.cnblogs.com/happyliu/p/6142929.html 1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便 ...

最新文章

  1. 在组策略中通过.zap的形式发布软件!
  2. NBIOT 移远BC28模块+stm32开发板例程、教程(打通TCP、COAP协议)
  3. 数学建模清风第三次直播:excel在数学建模中的应用
  4. 图像处理——图像变换
  5. REVERSE-PRACTICE-BUUCTF-19
  6. conduit 安装试用
  7. 国外不错的模板素材网站
  8. pytorch加载数据时中途卡死且未报错
  9. 记录手机app的使用时长
  10. 神经网络模型用于数学建模
  11. Linux 下 TC 命令原理及详解<一>
  12. zcmu--1931: wjw的剪纸(dfs+枚举)
  13. VBA 字典嵌套字典 + 数组
  14. win10 格式化 linux u盘,2.win10格式化磁盘和u盘
  15. 利用 FFMPEG 批量提取指定起止时间视频片段
  16. 关于在word里的表格里面打公式出现换行问题
  17. android 调用系统照相机拍照后保存到系统相册
  18. python安装setuptools_python安装setuptools的方法
  19. 基于python pyvisa模块控制GPIB设备识别不到设备资源号问题
  20. 高中计算机会考不及格,高中会考能补考吗?会考不及格后果啊?

热门文章

  1. Android股票app模拟同花顺,适合练手的Android项目
  2. C语言新手记:相邻数对
  3. APIO2007风铃
  4. 强烈推荐几个超厉害的公众号!
  5. 爱江山更爱美人服务器维修怎么,爱江山更爱美人落星院详细玩法攻略
  6. 颗粒粒径分析方法汇总
  7. 环保公司网站的设计与制作
  8. 900年历史的万安桥失火!传统古建筑又该如何保护?
  9. 小型OSPF路由网络的搭建
  10. 【机器学习】李宏毅-判断年收入