Flink 内存管理 #
Task Manager Memory Configuration
FAQ #
ps -T -p 182673|grep -i rocksdb
jemalloc 分析内存泄露 #
参考 #
现象 #
iceberg每次checkpoint,存储数据到hdfs,使用默认参数会进行压缩,不断创建对象,超过yarn container
内存限制
被kill掉
安装 #
flink 配置 #
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
查看占用内存最多的
- 导出图片
/usr/local/bin/jeprof --show_bytes -svg `which java` jeprof.153961.264.i264.heap > /tmp/167.svg
org_apache_hadoop_io_compress_zlib_ZlibCompressor_init
重复创建
ZlibCompressor
对象
mat 分析内存 #
MAT JDK1.8下载地址 Memory Analyzer 1.8.1 Release
- arthas 导出堆
heapdump /tmp/hprof/dump.hprof
- 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
下载到本地查看