$VAR1 = bless( { 'code' => 0, 'message' => 'TSocket: Could not write 20039295 bytes localhost:localhost' }, 'Thrift::TException' );
この数字は、クライアンから送信しようとするデータサイズなので、どこかに転送データのサイズの最大値の設定があるはずだと思い、データ量を調整しながら、エラーの発生するサイズの閾値を調査したら、Cassandraの起動時のメッセージにあるTFastFramedTransportのフレームサイズを越えてしまったことが判明しました。
【Cassandra起動時のメッセージ TFastFramedTransportの最大フレームサイズ】
INFO 23:46:51,625 Using TFastFramedTransport with a max frame size of 15728640 bytes.
ということで、「cassandra.yaml」の「thrift_framed_transport_size_in_mb」のサイズを15から20に変更してCassandraを再起動したら、今度は、Cassandraで、ERRORが発生して起動に失敗しました。
【Cassandra起動時のERROR】
ERROR 23:58:00,812 Fatal configuration error org.apache.cassandra.config.ConfigurationException: thrift_max_message_length_in_mb must be greater than thrift_framed_transport_size_in_mb when using TFramedTransport
ERRORの内容を読むと
『TFramedTransportを使う場合、thrift_max_message_length_in_mbは、thrift_framed_transport_size_in_mbより大きくなければならない。』
ということで、thrift_max_message_length_in_mbを21に変更し、Cassandraを再起動したら、Cassandraの起動に成功しました。
【Cassandra起動時のメッセージ TFastFramedTransportの最大フレームサイズ】
INFO 00:00:23,453 Using TFastFramedTransport with a max frame size of 20971520 bytes.
クライアントからのデータの投入にも成功しました。
■教訓
TSocketで転送サイズを増やしたい場合は、「cassandra.yaml」の
thrift_framed_transport_size_in_mb と thrift_max_message_length_in_mb
を調整しましょう。
(thrift_max_message_length_in_mb > thrift_framed_transport_size_in_mb)
【今回の変更(cassandra.yaml)】
thrift_framed_transport_size_in_mb: 20 thrift_max_message_length_in_mb: 21
0 件のコメント:
コメントを投稿