【问题标题】:cassandra-stress experiencing "java.lang.OutOfMemoryError: Java heap space" errorcassandra-stress 遇到“java.lang.OutOfMemoryError: Java heap space”错误
【发布时间】:2013-12-20 16:09:39
【问题描述】:

我正在尝试使用 cassandra-stress 工具在 cassandra 中插入记录。

cassandra-stress -d xx.xx.xx.xx -t 500 -c 1 -S 10240000

但我一直遇到以下错误:

Exception in thread "Thread-159" java.lang.OutOfMemoryError: Java heap space
        at java.util.Arrays.copyOf(Unknown Source)
        at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source)
        at java.lang.AbstractStringBuilder.ensureCapacityInternal(Unknown Source)
        at java.lang.AbstractStringBuilder.append(Unknown Source)
        at java.lang.StringBuilder.append(Unknown Source)
        at org.apache.cassandra.stress.util.Operation.multiplyString(Operation.java:211)
        at org.apache.cassandra.stress.util.Operation.generateValues(Operation.java:92)
        at org.apache.cassandra.stress.operations.Inserter.run(Inserter.java:45)
        at org.apache.cassandra.stress.StressAction$Consumer.run(StressAction.java:275)

我尝试通过更改 /usr/bin/cassandra-stress 中的 java 调用来增加堆:

$JAVA -server -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -Xms8033M -Xmx8033M -Xmn400M -cp $CLASSPATH org.apache.cassandra.stress.Stress $@

请注意,cassandra 本身没有显示任何错误。

我有一台运行 Ubuntu 12.04.3 LTS(GNU/Linux 3.2.0-55-generic x86_64)的 32 GB 四核机器。

【问题讨论】:

    标签: java cassandra out-of-memory cassandra-2.0


    【解决方案1】:

    如果您有 32 GB,我会尝试更接近您拥有的内存量。我也会尝试更大的伊甸园大小。对于高负载系统,我会使用这样的东西。

    -Xmn8g -Xmx24g
    

    您也可以根据需要设置最小值,但这可能无济于事。

    如果您使用这些设置监视系统,您可能会发现您不需要那么多内存,您可以减少它。如果这仍然太多,您需要减少压力测试或购买更大的盒子。

    【讨论】:

    • 感谢您的回复。这些设置将增加物理内存而不是 java 堆的使用。我正在使用 jconsole 监控使用情况,并且 java 堆使用情况没有改变。
    • @BhaskarSinghal 这些选项将显着改变堆的大小。如果您看到没有更改,则它们没有被正确应用。你认为年轻一代的规模有多大?它应该是 8 GB。
    • 感谢@Peter 更改堆大小等不起作用。我只是更改了应用程序代码以减少所需的堆。
    • @BhaskarSinghal 减少内存需求始终是最好的选择,但如果您使用不受控制的应用程序可能会更难。
    【解决方案2】:

    您的堆似乎不适合您的使用。所以一定要听从彼得的建议。但以防万一,您可以尝试使用 Plumbr 运行 cassandra-stress,以确保它不会泄漏内存。

    【讨论】:

    • 感谢@Nikem 更改堆大小等不起作用。我只是更改了应用程序代码以减少所需的堆。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 2012-08-03
    • 2021-03-21
    相关资源
    最近更新 更多