0

这是我的环境:

  1. Mac OS X:10.7.5
  2. Node.JS:v0.8.14
  3. Mongodb:v2.0.6 + node-mongodb-native 驱动
  4. 雷迪斯:2.6.3
  5. 语言:咖啡脚本

事情是这样的:当索引页面加载时,将发送两个 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是同一个collection

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

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

是因为mongodb吗?并发问题?

4

0 回答 0