开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

Flink CDC哪位大佬对这个内存不释放的问题有啥思路没啊 ?

Flink CDC哪位大佬对这个内存不释放的问题有啥思路没啊 ? 感觉不释放的内存好压抑哟

展开
收起
真的很搞笑 2023-10-22 22:35:32 223 0
3 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在Flink CDC中,如果你遇到了内存不释放的问题,那么可能有以下几种可能的原因:

    1. Flink的垃圾回收器设置不正确:你可能没有正确地设置Flink的垃圾回收器。你应该确保你的Flink的垃圾回收器设置正确,以确保Flink可以正确地释放内存。
    2. Flink的资源管理有问题:你可能没有正确地配置Flink的资源管理,以确保Flink可以正确地管理内存。你应该确保你的Flink的资源管理正确,以确保Flink可以正确地管理内存。
    3. Flink的任务没有正确地结束:你可能没有正确地结束Flink的任务,导致Flink无法正确地释放内存。你应该确保你的Flink的任务可以正确地结束,以确保Flink可以正确地释放内存。
    2023-10-23 14:48:29
    赞同 展开评论 打赏
  • Flink CDC在读取MySQL binlog日志时,可能存在内存泄漏问题。这通常是由于Flink CDC的代码出现了内存泄漏或者对象未被及时释放导致的。建议您检查Flink CDC的代码和日志,确认是否存在内存泄漏问题。

    持有该内存的对象在finalize的时候必须向OS释放这段内存,否则GC是无法自动释放该内存的,就会造成泄漏。因此,您需要确保所有对象在使用完毕后都被正确地释放了。

    此外,Flink并不是将大量对象存在堆内存上,而是将对象都序列化到一个预分配的内存块上,这个内存块叫做MemorySegment,它代表了一段固定长度的内存(默认大小为32KB),也是Flink中最小的内存分配单元,并且提供了非常高效的读写方法。对于独立部署模式(Standalone Deployment),如果你希望指定由Flink应用本身使用的内存大小,最好选择配置Flink总内存。Flink总内存会进一步划分为JVM堆内存和堆外内存。

    2023-10-23 10:36:59
    赞同 展开评论 打赏
  • Flink CDC 内存不释放的问题可能有以下几种原因和解决方案:

    • 原因一:Flink CDC 的 Source 连接器使用了缓存机制,为了保证数据的一致性和容错性,会缓存一些状态数据,例如 binlog 的 offset、表结构的元数据等。这些数据会占用一定的内存空间,随着数据量的增加,内存占用也会增加。
    • 解决方案一:调整 Flink 的状态后端(State Backend)的配置,选择合适的状态后端类型(例如 RocksDB),设置合理的状态过期时间(TTL),设置合理的状态清理策略(例如增量或全量快照),以及设置合理的内存管理参数(例如堆外内存、托管内存等)。

    • 原因二:Flink CDC 的 Sink 连接器使用了批量写入机制,为了提高写入效率,会将一些数据缓存在内存中,然后批量发送到下游数据库。如果下游数据库的写入速度跟不上 Flink CDC 的处理速度,或者出现网络延迟、数据库故障等问题,会导致缓存中的数据积累过多,占用过多的内存空间。

    • 解决方案二:调整 Flink CDC 的 Sink 连接器的配置,选择合适的批量写入大小(batch size)、批量写入间隔(flush interval)、重试次数(retry times)等参数,以及设置合理的回压机制(backpressure mechanism),以保证 Flink CDC 和下游数据库之间的平衡和稳定。

    • 原因三:Flink CDC 的 SQL API 使用了动态表机制,为了支持流式查询和更新操作,会将数据源表和结果表都抽象为动态表,即随着时间推移不断变化的表。动态表会维护一些中间状态数据,例如 Upsert 消息、Delete 消息等。这些数据也会占用一定的内存空间,随着查询复杂度和数据量的增加,内存占用也会增加。

    • 解决方案三:调整 Flink CDC 的 SQL API 的配置,选择合适的查询优化器(例如 Blink 或 Flink),设置合理的查询优化策略(例如 Join 类型、Join 条件、Join 顺序等),以及设置合理的查询执行参数(例如并行度、水印、迟到数据处理等)。
    2023-10-23 10:04:14
    赞同 1 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink峰会 - 李佳林 立即下载
    内存取证与IaaS云平台恶意行 为的安全监控 立即下载
    云服务器ECS内存增强型实例re6全新发布 立即下载