2012-08-25 40 views
6

Tôi tiếp tục đạt đến giới hạn kết nối của mình, nhưng lưu lượng truy cập http vẫn nhất quán. Tôi sử dụng MMS để cấu hình quá trình mongod của tôi và thấy rằng số lượng kết nối không ngừng tăng:Kết nối MongoDB tiếp tục tăng

mongod connections

Tôi đang sử dụng wrapper mongoskin cho Node.js (Express). Tôi có một phần của middleware tuyến tùy chỉnh kết nối với db mongo trước khi thực hiện các tuyến đường khác:

var _connect = function(req, res, next) { 
    res.db = mongoskin.db(_us.sprintf(
    '%s:%[email protected]:27017/%s?auto_reconnect', 
    app.set('mongoDbUser'), 
    app.set('mongoDbPw'), 
    app.set('mongoDb') 
)); 
    next(); 
}; 

Tôi có làm gì sai không? Tôi nên mở và đóng các kết nối như thế nào?

Trả lời

7

mongoskin là trình bao bọc cho trình điều khiển node-mongodb-native để các tùy chọn cho trình điều khiển gốc cơ bản vẫn được áp dụng.

Một số gợi ý để giảm số lượng kết nối được sử dụng:

  1. Mở kết nối của bạn trước khi bắt đầu ứng dụng (bạn không muốn mở một kết nối trong mỗi yêu cầu):

    var db = new mongoskin.db(...) 
    db.open(function(err, db) { 
        // Application logic 
    }) 
    
  2. Điều chỉnh nút-mongo-native connection poolSize. Kết nối tổng hợp cho phép một tập hợp các kết nối được chia sẻ trong ứng dụng của bạn thay vì luôn mở các kết nối mới. Các poolSize mặc định là 1 trong trình điều khiển cũ và 5 tính đến 1.1.4 xế nút-Mongo bản địa được phát hành ngày 16 tháng 8, 2012.

    Vì vậy, bạn có thể thử một cái gì đó như:

    var mongoskin = require('mongoskin'); 
    var serverOptions = { 
        'auto_reconnect': true, 
        'poolSize': 5 
    }; 
    var db = mongoskin.db('localhost:27017/test', serverOptions); 
    
+0

Cảm ơn Stennie. Tôi kết nối với db trong mỗi phần cấu hình Express của tôi, sau đó thiết lập res.db = app.set ('mongoConn') trong middleware tùy chỉnh đầu tiên của tôi. Làm việc hoàn hảo. –

Các vấn đề liên quan