1

我正在尝试使用 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 四核机器。

4

2 回答 2

1

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

-Xmn8g -Xmx24g

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

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

于 2013-12-04T08:57:01.340 回答
0

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

于 2013-12-05T06:04:13.757 回答