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.
2 回答
看起来您正在使用 Cassandra 的自定义图像。如果您是 Cassandra 的新手,我们建议您按照 Apache Cassandra 网站上的快速入门指南中的步骤操作,该网站将从 Docker 中心拉取映像。
409600k
当只有 256MB 分配给堆时,将 NewGen 大小设置为 400MB ( ) 是没有意义的。我们建议将 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。干杯!
同意埃里克!这里的快速解决方法是使用 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
,我们将看到从那里去哪里。