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

flink1.14.6跑一个简单的insert语句,taskmanager的JVM内存都占用了2.?

flink1.14.6跑一个简单的insert语句,taskmanager的JVM内存都占用了2.5G到4G左右,这是不是有内存泄露啊,而且严重影响了cdc的速度,56分钟才抽取了840万条数据?

展开
收起
真的很搞笑 2023-07-02 11:51:44 105 0
2 条回答
写回答
取消 提交回答
  • 在使用 Flink 1.14.6 运行一个简单的 insert 语句时,你观察到 TaskManager 的 JVM 内存占用了2.5GB到4GB左右,并且速度较慢。这可能是由于以下几个原因导致的:

    1. Flink 1.14.6 存在内存泄漏问题:特别是 ObjectHashMap 类可能会导致内存泄漏。你可以考虑升级到较新的 Flink 版本(如 1.14.7 或 1.15),其中部分内存问题已经修复。

    2. RocksDB StateBackend 默认占用较多内存:Flink 默认使用 RocksDB 作为 StateBackend,它可能占用较多的内存空间。你可以尝试使用其他的 StateBackend,如 FsStatebackend。

    3. TaskManager 分配的内存较多:如果你为 TaskManager 分配了较多的 JVM 内存,Flink 将会尽量利用这些内存资源。

    4. SQL 查询涉及较多的聚合、连接等操作:如果你的 SQL 查询涉及较多的聚合、连接等操作,会占用更多的内存空间。

    为了解决这个问题,你可以考虑以下优化措施:

    - 升级到较新的 Flink 版本:升级到 1.14.7 或 1.15 版本,其中部分内存问题已经修复。

    - 使用其他的 StateBackend:考虑使用 FsStatebackend 作为 StateBackend,它可能能够减少内存占用。

    - 减少 TaskManager 分配的 JVM 内存:通过修改 Flink 的配置文件(conf/flink-conf.yaml),降低 TaskManager 分配的 JVM 内存,例如调整 taskmanager.memory.fraction 参数。

    - 优化 SQL 查询:尽量避免过多的连接和中间结果,优化 SQL 查询的性能,从而减少内存消耗。

    - 降低 Table API 的并发度:如果使用 Table API 进行操作,降低并发度可以减少内存消耗。

    综上所述,要减少 Flink 1.14.6 的内存消耗,可以尝试使用上述优化措施,并确保合理配置和优化 SQL 查询和 Table API 的使用。希望这些建议对你有帮助。如果还有其他问题,请随时提问。

    2023-07-30 13:06:13
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    link 1.14.6 的任务消耗较多内存是存在的问题。
    这可能是以下几个原因造成的:
    Flink 1.14.6 存在内存泄漏问题,特别是 ObjectHashMap 类。
    Flink 的 RocksDB State Backend 默认占用较多内存。
    你的 TaskManager 分配的内存较多,Flink 会尽量利用完。
    执行的 SQL 查询涉及较多的聚合、连接等操作,占用更多内存。
    使用的 Table API 或 SQL 功能比较复杂,会占用更多内存。
    为了解决这个问题,你可以从以下方面做优化:
    升级到较新的 Flink 版本,如 1.14.7或1.15,部分内存问题已修复
    考虑使用其他 StateBackend,比如 FsStatebackend
    减少 TaskManager 分配的 JVM 内存
    优化 SQL 查询,避免过多连接和中间结果
    使用 Table API 时,降低并发度,减少内存消耗
    具体操作是修改 conf/flink-conf.yaml配置:
    yaml
    Copy
    taskmanager.memory.fraction: 0.7 # 降低 JVM 内存使用
    state.backend: filesystem # 使用 FileSystem StateBackend
    总的来说,要减少 Flink 1.14.6 的内存消耗,不仅要合理配置,还要优化 SQL 查询和 Table API 使用。

    2023-07-30 10:54:52
    赞同 展开评论 打赏

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

相关产品

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

    更多
    云服务器ECS内存增强型实例re6全新发布 立即下载
    JVM的GC 立即下载
    基于JVM的脚本语言开发、运用实践 立即下载