Cassandra在重插入工作负载下重置连接

时间:2012-07-12 00:31:33

标签: cassandra

我有一个8个节点的cassandra集群,cassandra 1.0.8。

我正在尝试使用batch_mutate()在循环中执行大量小插入操作。经过一段时间(约200K插入)服务器重置连接时出现以下异常:

org.apache.thrift.transport.TTransportException: java.net.SocketException: Connection reset
at org.apache.thrift.transport.TIOStreamTransport.write(TIOStreamTransport.java:147)
at org.apache.thrift.transport.TFramedTransport.flush(TFramedTransport.java:157)
at org.apache.cassandra.thrift.Cassandra$Client.send_batch_mutate(Cassandra.java:998)
at org.apache.cassandra.thrift.Cassandra$Client.batch_mutate(Cassandra.java:986)
at org.scale7.cassandra.pelops.Mutator$1.execute(Mutator.java:46)
at org.scale7.cassandra.pelops.Mutator$1.execute(Mutator.java:42)
at org.scale7.cassandra.pelops.Operand.tryOperation(Operand.java:56)
at org.scale7.cassandra.pelops.Mutator.execute(Mutator.java:51)
    ...
    Caused by: java.net.SocketException: Connection reset
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:96)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at org.apache.thrift.transport.TIOStreamTransport.write(TIOStreamTransport.java:145)
... 25 more

除此之外,群集工作正常。服务器日志很干净。

可能导致此问题的原因是什么?

谢谢!

1 个答案:

答案 0 :(得分:11)

我找到了原因:批量突变大小超过了TFramedTransport的帧大小。 可能有两种可能的解决方案:在cassandra.yaml中增加“thrift_framed_transport_size_in_mb”配置属性,或者使用较小的批量大小。