6

私は 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

リンク: Basho Labs Riak Driver riak-js

4

1 に答える 1