你好, 这边猜测, 应该flink在checkpoint到hdfs的过程中, hadoop hdfs client  存在续约线程泄露的问题.
 
根据checkpoint周期和任务checkpoint大小,比较容易的复现在写入clickhouse/iceberg的flink任务的taskmanager中,
并且泄露的线程以每天10~30的速度增长.    通过arthas发现LeaseRenewer线程不能被正确销毁和不断地创建, 基本判定是
LeaseRenewer的锁和检查机制失败导致线程泄露, 这个问题不止影响hadoop 3.1.0版本, 经过测试hadoop 历史版本(比如
2.8.5也受到了影响)https://issues.apache.org/jira/browse/HDFS-14575,
大家可以把jira中提交的commit变动的两个类DFSClient.java LeaseRenewer.java cherry
pick到生产使用的分支进行对比测试, 这个jira commit中也包含了完整的线程泄露过程的单元测试供测试

付永华 <18744811...@163.com> 于2024年8月23日周五 16:21写道:

> 您好!
>
>      我这边在使用Flink时遇到一个比较奇怪的问题,问题如下:
>
>      flink版本1.15.2, 开启了checkpoint,间隔时间为60s,checkpoint storage 为
> FileSystemCheckpointStorage,state
> backend为EmbeddedRocksDBStateBackend;观察Taskmanager的线程堆栈中,堆积了很多LeaseRenewer:user@nameservice1的等待线程
> ,为什么会出现这种情况?有没有人反馈过类似的问题呢?我这边需要怎么处理才能解决这个问题,帮忙看一下谢谢

回复