6. 内存

Flink 内存管理 #

Task Manager Memory Configuration

Flink内存设置思路

FAQ #

ps -T -p 182673|grep -i rocksdb

jemalloc 分析内存泄露 #

参考 #

Flink任务物理内存溢出问题定位

现象 #

iceberg每次checkpoint,存储数据到hdfs,使用默认参数会进行压缩,不断创建对象,超过yarn container内存限制 被kill掉

安装 #

containerized.taskmanager.env.LD_PRELOAD: /usr/local/lib/libjemalloc.so.2
containerized.taskmanager.env.MALLOC_CONF: prof:true,lg_prof_interval:25,lg_prof_sample:17,prof_prefix:jeprof.out

lg_prof_interval:30 1G生成1个文件

  • yarn pre-job模式启动,生成jprof文件的位置,会在 yarn container的日志目录下

分析 #

/usr/local/bin/jeprof --show_bytes /usr/local/jdk-current/bin/java jeprof.153961.387.i387.heap

top
  • top 查看占用内存最多的
  1. 导出图片
/usr/local/bin/jeprof --show_bytes -svg `which java` jeprof.153961.264.i264.heap > /tmp/167.svg

svg

org_apache_hadoop_io_compress_zlib_ZlibCompressor_init

重复创建 ZlibCompressor 对象

mat 分析内存 #

MAT JDK1.8下载地址 Memory Analyzer 1.8.1 Release

  1. arthas 导出堆
heapdump /tmp/hprof/dump.hprof
  1. mat 分析堆
./mat/ParseHeapDump.sh /tmp/hprof/dump2.hprof org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components
生成 dump2_Leak_Suspects.zip,dump2_System_Overview.zip,dump2_Top_Components.zip 下载到本地查看