博客 / 詳情

返回

flink 1.12.2 安裝error‘UseG1GC‘ is experimental and must be enabled via -XX:+UnlockExperiment

1、查看 flink-smartsi-taskexecutor-0-smarsi.out 日誌發現如下異常信息

Error: VM option 'UseG1GC' is experimental and must be enabled via -XX:+UnlockExperimentalVMOptions.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

2、從異常信息中可知JVM 認為你嘗試使用的虛擬機選項 -XX:+UseG1GC 是一個實驗性(Experimental) 功能。

為了防止用户無意中使用可能不穩定的實驗功能,JVM要求必須顯式地“解鎖”這些選項。這就是為什麼它提示你必須通過 -XX:+UnlockExperimentalVMOptions 來啓用。
直接後果時由於 JVM 參數校驗失敗,Java 虛擬機根本無法創建,導致 Kafka 服務進程啓動失敗並退出。問題的根源在於 JVM 版本的變遷 和 Flink 默認配置的衝突。

由於使用的 Flink 比較新的版本,其 TaskManager 啓動腳本中默認的 JVM 參數配置包含了 -XX:+UseG1GC,但由於我們使用的是 JDK 8 比較低的版本,所以導致衝突。

3. 解決方案

因某些原因暫時無法升級 Java,可以修改 Flink 的 TaskManager 啓動腳本,增加解鎖實驗性選項的參數。

打開 bin/taskmanager.sh 文件,找到設置 JVM 參數的地方。通常你會在文件中看到類似這樣的代碼:

# if no other JVM options are set, set the GC to G1
if [ -z "${FLINK_ENV_JAVA_OPTS}" ] && [ -z "${FLINK_ENV_JAVA_OPTS_TM}" ]; then
    export JVM_ARGS="$JVM_ARGS -XX:+UseG1GC"
fi

只需修改 JVM_ARGS 配置添加 -XX:+UnlockExperimentalVMOptions 即可:

export JVM_ARGS="$JVM_ARGS -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC"

 

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.