[英]CQLSSTableWriter memory leak
我正在使用Cassandra的CQLSSTableWriter将大量数据导入到Cassandra中。 当我使用CQLSSTableWriter用复合主键写入表时,内存消耗不断增长。 JVM的GC无法收集任何已使用的内存。 当写入没有复合主键的表时,JVM GC可以正常工作。
我的Cassandra版本是2.0.5。 操作系统是Ubuntu 14.04 x86-64。 JVM参数是-Xms1g -Xmx2g。 这对于所有其他非复合主键案例就足够了。
可以通过以下测试用例来重现该问题:
import org.apache.cassandra.io.sstable.CQLSSTableWriter;
import org.apache.cassandra.exceptions.InvalidRequestException;
import java.io.IOException;
import java.util.UUID;
class SS {
public static void main(String[] args) {
String schema = "create table test.t (x uuid, y uuid, primary key (x, y))";
String insert = "insert into test.t (x, y) values (?, ?)";
CQLSSTableWriter writer = CQLSSTableWriter.builder()
.inDirectory("/tmp/test/t")
.forTable(schema).withBufferSizeInMB(32)
.using(insert).build();
UUID id = UUID.randomUUID();
try {
for (int i = 0; i < 50000000; i++) {
UUID id2 = UUID.randomUUID();
writer.addRow(id, id2);
}
writer.close();
} catch (Exception e) {
System.err.println("hell");
}
}
}
我自己弄清楚了。 该行不应太宽。 50000000对于单行而言太大。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.