你好, 这边猜测, 应该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的等待线程 > ,为什么会出现这种情况?有没有人反馈过类似的问题呢?我这边需要怎么处理才能解决这个问题,帮忙看一下谢谢