Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
471 views
in Technique[技术] by (71.8m points)

javascript - Mongoose.js creates multiple connections to MongoDB from one connect() call

I am making a single connection to MongoDB via Mongoose in Node.js Express app:

var express = require('express');
var mongoose = require('mongoose');
mongoose.connect('localhost', 'test');

I then define schema, followed by models, and lastly the controller that pulls all users from the database:

app.get('/users', function (req, res) {
  return User.find(function (err, users) {
    if (!err) {
      return res.send(users);
    }
  });
});

These DB connections open during the application start and they stay open for the duration of the node.js application.

What bothers me is why do I have 5 connections open? As soon as I close the node.js app, all 5 connections are closed. enter image description here

Related note: For a REST API server is it better to have MongoDB connection always open. Or is it better to manually open/close connections per each user request? d

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

That's because Mongoose uses a pool of 5 connections (by default) that are shared throughout your application. For best performance, it's best to just leave them open.

You can alter the default behavior via the options parameter to mongoose.connect. For example:

mongoose.connect('localhost', 'test', { server: { poolSize: 3 }}); // Use 3 connections

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...