是的,全托管的 Flink 是可以改用 G1 垃圾回收器的。您可以根据以下步骤进行配置:
conf/flink-conf.yaml
文件中添加以下配置项:taskmanager.memory.process.size: 2g
parallelism.default: 8
state.backend.fs.checkpointdir: file:///mnt/taskmanager/checkpoints/
state.backend.rocksdb.memory.managed.fraction: 0.7
taskmanager.heap.size: -Xmx1g -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+UseParNewGC -XX:-UseParallelOldGC -XX:MaxDirectMemorySize=1g -XX:ReservedCodeCacheSize=256m -XX:+UseStringDeduplication
这些配置项将会把默认的 GC 改为 CMS GC,并启用 String Deduplication 功能。请注意,上述配置项只是示例,您应该根据自己的实际情况进行调整。
conf/log4j.properties
文件中添加以下配置项:log4j.rootLogger=INFO, console, flinkRollingFileAppender
log4j.appender.flinkRollingFileAppender=com.alibaba.log4j.DailyRollingFileAppender
log4j.appender.flinkRollingFileAppender.File=/var/log/flink/flink.log
log4j.appender.flinkRollingFileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.flinkRollingFileAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.logger.org.apache.flink.runtime.memory.TaskExecutorOutOfMemoryHandler=DEBUG
log4j.logger.org.apache.flink.runtime.memory.MemoryManager=DEBUG
这些配置项将会打印出详细的 GC 日志信息,以便您了解 Flink 的运行情况。
taskmanager.heap.size: -Xmx1g -XX:+UseG1GC
Apache Flink的全托管版本(也称为Flink Server)使用的是Java作为其运行环境,因此,它的垃圾回收器类型是由Java虚拟机(JVM)的配置决定的。
在大多数情况下,Flink Server使用的垃圾回收器类型是由Flink的启动脚本或者启动命令行参数设置的。例如,如果Flink是在Apache YARN上运行的,那么垃圾回收器的类型通常是由YARN的Java选项设置的。
如果你想改变垃圾回收器的类型,你可以尝试修改这些配置选项。然而,这需要一定的Java和Flink的知识,并且可能需要一些实验和调整,以确保新的配置不会影响Flink的性能和稳定性。
另外,需要注意的是,不同的垃圾回收器有不同的性能特性和适用场景,选择哪种类型的垃圾回收器并不是一个简单的决定。你应该根据你的具体需求和场景,以及你的系统的性能特性,来决定使用哪种类型的垃圾回收器。
全托管版 Flink 默认使用 G1 垃圾回收器。若要更改 GC 收集器,请联系技术支持部门了解更多信息。
一般来说,建议保持默认设置,因为在全托管版 Flink 中,采用 G1 收集器已进行了大量优化,因此不需要更改默认设置。如果你发现特定场景下需要调整参数,可以考虑修改额外的 JVM 参数来调整 Flink 任务的行为。具体来说,你可以使用 FLINK_JAVA_OPTS 和 FLINK_JAVA_OPTS_TM 环境变量来指定不同的参数。不过,修改 JMX 参数需谨慎,并遵循官方文档。
主要的原因是因为我们现在是JDK 8, 8的G1不是那么好,后边有计划到11。我们那会儿可以考虑把G1作为默认的,现在云上你也可以自己改成G1,通过参数配置。此回答整理自钉群“实时计算Flink产品交流群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。