这是我的环境:
- Mac OS X:10.7.5
- Node.JS:v0.8.14
- Mongodb:v2.0.6 + node-mongodb-native 驱动
- 雷迪斯:2.6.3
- 语言:咖啡脚本
事情是这样的:当索引页面加载时,将发送两个 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吗?并发问题?