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」構成プロパティを増やすか、より小さいバッチ サイズを使用するかの 2 つの解決策が考えられます。

于 2012-07-12T13:08:10.223 に答える