Node.js + Mongodb,同时有两个ajax请求,一个被挂起

时间:2013-03-12 15:25:05

标签: node.js mongodb

这是我的环境:

  1. Mac OS X:10.7.5
  2. Node.JS:v0.8.14
  3. Mongodb:v2.0.6 + node-mongodb-native driver
  4. Redis:2.6.3
  5. 语言:coffee-script
  6. 这是事情: 加载索引页面时,将发送两个ajax请求:

    var xhr1 = $.ajax({
        url: '/a',
        'dataType': 'json'
        'success': function(){}
    );
    xhr1.done(function(){...})
    var xhr2 = $.ajax({
        url: '/b',
        'dataType': 'json'
        'success': function(){}
    );
    xhr2.done(function(){...})
    

    然后两个人都会查询Mongodb,如下所示:

    app.get('/a', functionA);
    app.get('/b', functionB);
    
    
    functionA = function() {
        var collectionA = new mongodb.Collection(client, 'a');
        collectionA.find().toArray(function(err, arrayA){
            var collectionB = new mongodb.Collection(client, 'b');
            collectionB.find().toArray(function(err, ArrayB) {
            });
        });
    }
    functionA = function() {
        var collectionB = new mongodb.Collection(client, 'b');
        collectionB.find().toArray(function(err, arrayB){
        });
    }
    

    两个请求中的collectionB是同一个集合

    每次,一个请求(第一个或第二个)被暂停,没有响应,没有错误。从日志中,我可以看到请求被卡在find()方法中。什么是有线的是大约两分钟后,页面再次发送相同的请求(我猜JQuery做了那个),然后得到了响应。

    在这两个请求中,没有redis请求。

    是因为mongodb?并发问题?

0 个答案:

没有答案