4

我有一个 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

否则,集群工作正常。服务器日志是干净的。

什么可能导致这个问题?

谢谢!

4

1 回答 1

11

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

于 2012-07-12T13:08:10.223 回答