我有一个包含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除此之外,集群工作得很好。服务器日志是干净的。
可能导致此问题的原因是什么?
谢谢!
发布于 2012-07-12 21:08:10
我已经找到了原因:批量突变大小超过了TFramedTransport的帧大小。可能有两种可能的解决方案:在cassandra.yaml中增加"thrift_framed_transport_size_in_mb“配置属性,或者使用较小的批处理大小。
https://stackoverflow.com/questions/11443519
复制相似问题