我正在尝试使用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运行的四核机器。
答案 0 :(得分:1)
如果你有32 GB,我会尝试更接近你拥有的内存量。我也会尝试更大的伊甸园尺寸。对于高负载系统,我会使用这样的东西。
-Xmn8g -Xmx24g
如果您愿意,也可以设置最小值,但可能没有帮助。
如果您使用这些设置监控系统,您可能会发现您不需要那么多内存,您可以减少它。如果这仍然太多,你需要减少压力测试或获得更大的盒子。
答案 1 :(得分:0)
您的堆似乎不适合您的使用情况。所以请遵循彼得的建议。但为了以防万一,您可以尝试使用Plumbr运行cassandra-stress,以确保它不会泄漏内存。