繁体   English   中英

CQLSSTableWriter内存泄漏

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM