単一ノードで Cassandra インスタンス (v1.1.10) への単純な書き込み操作を実行したいと考えていました。一定の書き込みを処理する方法と、書き込み速度に追いつくことができるかどうかを確認したかっただけです.
pool = ConnectionPool('testdb')
test_cf = ColumnFamily(pool,'test')
test2_cf = ColumnFamily(pool,'test2')
test3_cf = ColumnFamily(pool,'test3')
test_batch = test_cf.batch(queue_size=1000)
test2_batch = test2_cf.batch(queue_size=1000)
test3_batch = test3_cf.batch(queue_size=1000)
chars=string.ascii_uppercase
counter = 0
while True:
counter += 1
uid = uuid.uuid1()
junk = ''.join(random.choice(chars) for x in range(50))
test_batch.insert(uid, {'junk':junk})
test2_batch.insert(uid, {'junk':junk})
test3_batch.insert(uid, {'junk':junk})
sys.stdout.write(str(counter)+'\n')
pool.dispose()
長時間の書き込みの後 (カウンターが約 10M+ の場合)、コードがクラッシュし続け、次のメッセージが表示されます。
pycassa.pool.AllServersUnavailable: An attempt was made to connect to each of the servers twice, but none of the attempts succeeded. The last failure was timeout: timed out
queue_size=100
役に立たなかったを設定しました。またcqlsh -3
、スクリプトがクラッシュして次のエラーが発生した後、コンソールを起動してテーブルを切り捨てました。
Unable to complete request: one or more nodes were unavailable.
テーリング/var/log/cassandra/system.log
ではエラー サインは表示されませんが、Compaction、FlushWriter などでは INFO が表示されます。私は何を間違っていますか?