S3 の代替として RIAK-CS をテストしています。現在、それぞれ 4GB の RAM と 2GB の SWAP を備えた 3 つのノードがあります。10GB のデータを RIAK-CS にプッシュしました。IO が高いことを除けば、すべて問題ありませんでした。
次に、次の python スクリプトを使用してそのデータを取得しようとしました。
conn = boto.connect_s3(
aws_access_key_id = access_key,
aws_secret_access_key = secret_key,
host = riak_host,
proxy = riak_host,
proxy_port = 8080,
calling_format = boto.s3.connection.OrdinaryCallingFormat(),
debug = 2,
is_secure = False,
)
bucket = conn.create_bucket('bucket_name')
for row in rows:
key=bucket.new_key(valid_key_name)
if key.exists():
key.open_read()
RIAKから物事が引き出され始めました。数分後、再び巨大な IO を除いて、riak-cs プロセスがますます多くのメモリを「消費」し、最終的に 6GB の RAM+SWAP をすべて消費したためにクラッシュしたことに気付きました。
Python スクリプトを次のように変更した場合、riak-cs は ~2-300 MB のままでした。FOR ループの接続に注意してください。
for row in rows:
conn = boto.connect_s3(
aws_access_key_id = access_key,
aws_secret_access_key = secret_key,
calling_format = boto.s3.connection.OrdinaryCallingFormat(),
debug = 2,
is_secure = False,
)
bucket = conn.create_bucket('bucket_name')
key=bucket.new_key(valid_key_name)
if key.exists():
key.open_read()
なぜこれが起こるのか説明はありますか?
ありがとうございました!