Показать сообщение отдельно
Старый 23.05.2014, 13:41   #1
juno24
AnyKey`щик
 
Регистрация: 23.05.2014
Сообщений: 3
Написано одно полезное сообщение
Node.js выкидывает throw при коннекте

Такая проблема с node.js

Задача простая подключиться mongo, сделать insert или update отключиться.
Использую express.

Код взял из примера на gitHUB, нативный драйвер для mongodb.


app.get('/api/cnt/:pid/:blist',function(req,res,next){

MongoClient.connect('mongodb://127.0.0.1:27017/messager', function(err, db) {
 //if(err) throw err;

 var blist = '';
 blist = req.params.blist ;
 bl = blist.split(',');
  
 var collection = db.collection('adv_cnt');
  
 for(i=0;i<bl.length;i++)
 {
  collection.update({pid:req.params.pid,bid:bl[i]},{$inc:{cnt:1}}, {w:1}, function(err, result) {});
 }

})
    res.end("ok");

});
Код вобщем то рабочий.
Но когда решил проверить под нагрузкой , вывалилась ошибка подключния к монго.

Проверял вот таким скриптом, отправляя в цикле запросы curl - ом

#!/usr/bin/perl
use Time::HiRes;
for ($i=1;$i<=1000000;$i++)
{
$cmd="curl \"http://x.x.x.x:3000/api/newbanner/2/\"".$i;
#Time::HiRes::sleep (0.05);
system($cmd);
}
Нод падает между 5000 и 6000 инсертами .

Сделал задержку между запросами 0,05 сек 120 000 записей, полет нормальный.

Но как же заявленная нагрузка в 1 000 000 одновременных подключений?

Есть у кого нибудь мысли ? Хотелось бы на продакшене иметь 100% надежность.

Всем заранее спасибо за ответы !

Последний раз редактировалось moka, 24.05.2014 в 01:19.
(Offline)
 
Ответить с цитированием