私は riak / riak-js と組み合わせて nodejs アプリケーションに取り組んでおり、次の問題に遭遇しました:
このリクエストの実行
db.mapreduce
.add('logs')
.run();
バケット ログに保存されている 155.000 個のアイテムすべてを ID とともに正しく返します。
[ 'logs', '1GXtBX2LvXpcPeeR89IuipRUFmB' ],
[ 'logs', '63vL86NZ96JptsHifW8JDgRjiCv' ],
[ 'logs', 'NfseTamulBjwVOenbeWoMSNRZnr' ],
[ 'logs', 'VzNouzHc7B7bSzvNeI1xoQ5ih8J' ],
[ 'logs', 'UBM1IDcbZkMW4iRWdvo4W7zp6dc' ],
[ 'logs', 'FtNhPxaay4XI9qfh4Cf9LFO1Oai' ],
....
map-Funktion を指定し、バケット ログ内のいくつかの項目のみを使用する場合
db.mapreduce
.add([['logs', 'SUgJ2fhfgyR2WE87n7IVHyBi4C9'], ['logs', 'EMtywD1UFnsq9rNRuINLzDsHdh2'], ['logs', 'ZXPh5ws8mOdASQFEtLDk8CBRn8t']])
.map( function(v) {return ["asd"]; } )
.run();
すべてが正常に機能しており、次の予期される出力が返されます。
[ 'asd', 'asd', 'asd' ]
riak にバケット「ログ」内のすべてのアイテム (約 155.000 個の小さな json ドキュメント) をマップさせたい場合
db.mapreduce
.add('logs')
.map( function(v) {return ["asd"]; } )
.run();
エラーのみが表示されます:
{ [Error: [object Object]] message: '[object Object]', statusCode: 500 }
ここで何が起こりますか?Error-Object には、有用なものは何も書かれていません。
更新: riak-console は次のように何度も言います:
[notice] JS call failed: All VMs are busy.
riaks app.config の map_js_vm_count を 36 にインクリメントすると、メッセージは次のようになります。
[error] Pipe worker startup failed:fitting was gone before startup