【问题标题】:How to fix the below Cassandara error in docker container [closed]如何修复docker容器中的以下Cassandara错误[关闭]
【发布时间】:2021-11-20 08:29:30
【问题描述】:

Picked up _JAVA_OPTIONS: -Xms128m -Xmx256m

[0.013s][warning][gc,ergo] NewSize was set larger than initial heap size, will use initial heap size.

[0.013s][warning][gc,ergo] MaxNewSize (409600k) is equal to or greater than the entire heap (262144k).  A new max generation size of 262080k will be used.

OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.

CMSRescanMultiple (32) must be less than or equal to ergonomic maximum (2) which is based on the maximum size of the old generation of the Java heap

CMSConcMarkMultiple (32) must be less than or equal to ergonomic maximum (2) which is based on the maximum size of the old generation of the Java heap

Error: Could not create the Java Virtual Machine.

Error: A fatal exception has occurred. Program will exit.

Picked up _JAVA_OPTIONS: -Xms128m -Xmx256m

OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.

[0.008s][warning][gc,ergo] NewSize was set larger than initial heap size, will use initial heap size.

[0.009s][warning][gc,ergo] MaxNewSize (409600k) is equal to or greater than the entire heap (262144k).  A new max generation size of 262080k will be used.

CMSRescanMultiple (32) must be less than or equal to ergonomic maximum (2) which is based on the maximum size of the old generation of the Java heap

CMSConcMarkMultiple (32) must be less than or equal to ergonomic maximum (2) which is based on the maximum size of the old generation of the Java heap

Error: Could not create the Java Virtual Machine.

Error: A fatal exception has occurred. Program will exit.

【问题讨论】:

  • 欢迎来到 Stack Overflow。虽然似乎有些人能够根据您提供的日志帮助解决您的问题,但我仍然鼓励您阅读How do I ask a good question? 页面。您的问题至少可以从包含允许其他人尝试重现您的问题的最小 Dockerfile 中受益。

标签: java docker cassandra cassandra-4.0 java-heap


【解决方案1】:

同意埃里克!这里的快速解决方法是使用最新的 OpenJDK 8 补丁,并将 Xmx & Xms 设置为 1GB 或 2GB,然后可能保持 Xmn @ 400MB。

编辑 20210929

只是为了澄清我上面的陈述,当前有关为 Cassandra 设置带 CMS GC 的 Xmn(堆新生代大小)的指导是在 Xmx(堆最大大小)的 25%-40% 之间。因此,对于 2GB 堆,Xmn 应该在 500MB 和 800MB 之间;对于 1GB 堆,400MB 设置应该没问题。

以上解决方法都不起作用

好的,那么除了堆设置之外肯定还有其他问题导致这里出现问题。根据上面报告的错误消息,您遇到了bin/cassandra.in.sh 的这一部分,Cassandra 4.0 解析java -version 的输出以确定您正在运行的 JDK。

我发现 JDK 的版本输出格式与 OpenJDK 或 Oracle 的格式不同。你可能在使用 AdoptOpenJDK 吗?

使用java -version 的输出编辑您的帖子,我们会看看从那里去哪里。

【讨论】:

  • 上述解决方案对我不起作用。
  • @TarasHaidar 编辑完成!
【解决方案2】:

您似乎正在使用 Cassandra 的自定义图像。如果您是 Cassandra 的新手,我们建议您按照 Apache Cassandra 网站上的Quick Start 指南中的步骤操作,该指南将从 Docker 中心拉取映像。

当只有 256MB 分配给堆时,将 NewGen 大小设置为 400MB (409600k) 是没有意义的。我们建议将 min (-Xms) 和 max (-Xmx) 堆设置为相同的大小,以便在启动时预先分配最大值。还将 NewGen 设置为最大堆的 50%。

此外,不支持 Java 9。 Cassandra 3.11 及更早版本仅支持 Java 8。在 Cassandra 4.0 中添加了对 Java 11 的实验性支持,尽管我们希望尽快删除“实验性”标签并使其正式用于 4.x。目的是为未来的 Cassandra 版本支持 Java 11 + 17 LTS。干杯!

【讨论】:

    猜你喜欢
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 2020-04-19
    相关资源
    最近更新 更多