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

请教下,我使用的flink k8s application模式部署怎么办?

请教下,我使用的flink k8s application模式部署,之前用flink1.13.6_java8跑一个任务,没什么问题,现在升级为1.17.0_java11,反而会出现大量的oomkill,导致TM反复重启,我查的说这个跟jvm overhead区域超用有关,我Tm总内存给了10g,jvm_overhead给到了3g,问题仍然存在?

展开
收起
夹心789 2024-06-04 09:08:54 52 0
1 条回答
写回答
取消 提交回答
  • Flink 1.13 到 1.17 版本间经历了多个重大更新,包括对内存管理模型的改进,特别是 Java 11 相比于 Java 8 在内存使用上可能有所不同,可能导致原有配置不再适用。

    几个可能的解决方向:

    JVM Overhead 调整:虽然你已经尝试调整了 jvm_overhead 参数,但可能仍需进一步微调。Flink 1.13 到 1.17 版本升级过程中,内存模型可能发生了变化,包括如何计算 JVM Overhead。确保你按照最新的官方文档调整这些参数,并理解它们是如何影响总体内存分配的。

    GC 调优:Java 11 默认使用的是 G1 垃圾收集器,而之前版本可能默认是 Parallel GC 或 CMS。G1 垃圾收集器的行为和内存管理策略与旧的收集器有所不同,可能需要针对你的应用进行特定的 GC 调优。例如,可以通过设置 -XX:+UseG1GC 和 -XX:MaxGCPauseMillis 等参数来优化垃圾回收策略。

    堆外内存:Flink 使用的内存不仅仅是堆内存,还包括堆外内存(如用于网络缓冲区、排序等)。确保你考虑到了所有类型的内存使用,并不是简单地调整 JVM 堆大小就能解决的。检查是否有大量数据序列化、反序列化或者 shuffle 操作导致的内存激增。

    Flink 配置检查:确认是否有新的配置选项或者默认配置在新版本中发生了变化,这些变化可能会影响到内存管理。查看 Flink 的官方文档和发行说明,了解是否有需要手动调整的配置项。最佳方案还是,获取并分析堆栈跟踪,确定是哪部分代码导致的内存溢出,这有助于针对性地解决问题 ,此回答整理自钉群“【②群】Apache Flink China社区”

    2024-06-04 22:35:38
    赞同 展开评论 打赏

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

相关产品

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

    更多
    ACK 云原生弹性方案—云原生时代的加速器 立即下载
    ACK集群类型选择最佳实践 立即下载
    企业运维之云原生和Kubernetes 实战 立即下载