「test」という名前のコレクションが1つある非常に単純なmongodbデータベースがあり、コレクションに133.306レコードを挿入する必要があります。これらのレコードはJSONファイルに保存されます。このファイルのサイズは21Mbです。50.000レコードが1秒で正常に挿入されます。70.000レコードの挿入により、スクリプトがハングします。
コード:
var path = require('path'),
fs = require('fs'),
mongodb = require('mongodb'),
safe = { safe : true },
rowset;
rowset = JSON.parse(fs.readFileSync(path.join(__dirname, 'test.js')));
console.log('Total records: ' + rowset.length);
rowset = rowset.slice(0, 50000); // OK
// rowset = rowset.slice(0, 70000); // FAIL
console.log('Inserting ' + rowset.length + ' records');
mongodb.MongoClient.connect('mongodb://127.0.0.1:27017/browser',
function (err, client) {
if (err) throw err;
client.createCollection('test', safe, function (err, collection) {
if (err) throw err;
collection.insert(rowset, safe, function (err) {
if (err) throw err;
client.close(function (err) {
if (err) throw err;
console.log('done');
});
});
});
});
mongod出力の最後の数行:
Wed Dec 26 16:50:46 [initandlisten] connection accepted from 127.0.0.1:52003 #854 (4 connections now open)
Wed Dec 26 16:50:46 [initandlisten] connection accepted from 127.0.0.1:52004 #855 (5 connections now open)
Wed Dec 26 16:50:46 [initandlisten] connection accepted from 127.0.0.1:52005 #856 (6 connections now open)
これは、行セットからの典型的なレコードです。
{ _id: 133306,
product: 23089,
version: '1.0.0',
update: null,
edition: null,
lang: null,
entries: [ 54344, 54345 ] }
たぶん、スクリプトはいくつかのしきい値または制限に達しますか?