【问题标题】:Cassandra could not create Java Virtual MachineCassandra 无法创建 Java 虚拟机
【发布时间】:2021-07-19 19:16:08
【问题描述】:

我在 Mac OS 上运行 cassandra -f 并立即发生这种情况:

[0.002s][warning][gc] -Xloggc is deprecated. Will use -Xlog:gc:/usr/local/apache-cassandra-3.0.10/logs/gc.log instead.
Unrecognized VM option 'UseParNewGC'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.```

我不知道为什么会这样。我做得对

export CASSANDRA_HOME=/usr/local/apache-cassandra-3.0.10
export PATH=$PATH:$CASSANDRA_HOME/bin

但它仍然无法正常工作。

这与我的 Java 版本有关吗?我怎样才能完全干净地安装 Cassandra/让它工作?

【问题讨论】:

    标签: java cassandra


    【解决方案1】:

    在该版本的 Cassandra 中,UseParNewGC 设置在 jvm.options 文件中定义。它是 CMS GC JVM 设置块中的第一个设置。

    #################
    #  GC SETTINGS  #
    #################
    
    ### CMS Settings
    
    -XX:+UseParNewGC
    -XX:+UseConcMarkSweepGC
    -XX:+CMSParallelRemarkEnabled
    

    我怀疑发生了两种情况之一。

    1. -XX:+UseParNewGC 设置可能未正确指定。在您的 jvm.options 文件中仔细检查。
    2. 更有可能的情况是,我在上面显示的块上方对 jmv.options 文件进行的先前错误编辑导致了问题。由于-XX:+UseParNewGC 行是此块中的第一行,错误似乎 出现在此处。上面的部分是设置堆大小参数的地方,所以我会检查是否有未注释的内容或引用未正确关闭。
    3. 使用java -version 检查您的Java 版本。较新版本的 Java(如 10 或 11 及更高版本)不支持并行垃圾收集器。此外,Cassandra 3.x 仅在 Java 8 上运行,因此您真的没有理由使用最近的 JVM。

    【讨论】:

    • 抱歉,我找到了文件。这个文件有什么我可以编辑的吗?
    • GC 日志区域如下所示:### GC logging options -- uncomment to enable -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+PrintPromotionFailure #-XX:PrintFLSStatistics=1 #-Xloggc:/var/log/cassandra/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M 我应该注释掉-XX: +UseParNewGC
    • @hyvbug 另一种可能性是,可能在 cassandra-env.sh 文件中配置了一些 JVM 设置,这是为旧版本的 Cassandra 配置的位置.所以我还会检查该文件的-XX:+UseParNewGC 设置。
    • 这方面有什么帮助吗?由于上述错误,我无法运行 cassandra。
    • @SiyaramMalav 进行了额外的编辑。基本上确保您使用的是 Java 8。
    【解决方案2】:

    Apache Cassandra 3.11.10 仅与 Java 8 一起运行。 在 PowerShell 中将执行策略设置为 Unrestricted

    Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

    Set-ExecutionPolicy 不受限制

    如果您遇到与 Sigar 相关的错误,请在 Conf 文件夹下的 cassandra-env.ps1 文件中注释该行。

    评论下面一行

    # $env:JVM_OPTS = "$env:JVM_OPTS -Djava.library.path=""$env:CASSANDRA_HOME\lib\sigar-bin"""
    

    【讨论】:

    • “我在 Mac OS 上”,所以我认为 PowerShell 在这里不会非常相关。
    猜你喜欢
    • 2013-12-07
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 2013-10-14
    • 2017-05-30
    • 1970-01-01
    • 2012-10-20
    相关资源
    最近更新 更多