ここ数日、私はリアクと少し遊んでいました。初期設定は思ったより簡単でした。これで、テストのためにすべてのノードが同じ vm で実行されている 3 ノード クラスターができました。
確かに、私の仮想マシンのハードウェア設定は大幅にダウングレードされています (1 CPU、512 MB RAM) が、それでも riak のパフォーマンスが遅いことにかなり驚いています。
マップリデュース
map reduce で少し遊んでみると、1 つのバケットに約 2000 個のオブジェクトがあり、それぞれのサイズは json として約 1k ~ 2k でした。このマップ関数を使用しました:
function(value, keyData, arg) {
var data = Riak.mapValuesJson(value)[0];
if (data.displayname.indexOf("max") !== -1) return [data];
return [];
}
また、結果を返す http 要求を実行するだけで 2 秒以上かかりました。クライアント コードで json からの結果を逆シリアル化するのにかかった時間は数えません。3 つのノードのうち 2 つを削除すると、パフォーマンスがわずかに 2 秒未満に改善されたように見えますが、それでも私には非常に遅いようです。
これは予想されることですか?オブジェクトのバイトサイズはそれほど大きくなく、1 つのバケットに 2000 個のオブジェクトもそれほど大きくありません。
入れる
上記と同じサイズの約 60.000 個のオブジェクトのバッチ挿入は、かなり時間がかかり、実際にはうまくいきませんでした。
オブジェクトを riak に挿入した私のスクリプトは約 40.000 で停止し、riak ノードに接続できなくなったと言いました。riak ログで、ノードがメモリ不足で停止したことを示すエラー メッセージを見つけました。
質問
これは本当に riak での最初のショットなので、何かを台無しにした可能性は間違いなくあります。
- 微調整できる設定はありますか?
- ハードウェア設定が制限されすぎていませんか?
- riak とやり取りするために使用した PHP クライアント ライブラリが、ここでの制限要因ではないでしょうか?
- すべてのノードを同じ物理マシンで実行するのはかなりばかげていますが、これが問題である場合、どうすればriak のパフォーマンスをよりよくテストできますか?
- map reduce は本当に遅いですか? riak メーリング リストで map reduce によるパフォーマンス ヒットについて読みましたが、Map Reduce が遅い場合、ほぼリアルタイムで必要なデータの「クエリ」をどのように実行すればよいのでしょうか? riak が redis ほど速くないことはわかっています。
riak の経験が豊富な人がこれらの質問のいくつかを手伝ってくれれば、本当に助かります。