Connexion à la base de données (temporairement écrite en app.js)
var options = {
server: {
poolSize: 100,
auto_reconnect: true,
keepAlive: 10
}
}
var db = mongoose.connect(settings.MONGODB_URL,options);
Question :
1. Insérez les données par lots et elles apparaîtront après un certain temps :
MongoError : la connexion 95 à xxx.xxx.xxx a expiré
2. Lorsque l'erreur ci-dessus se produit, toutes les opérations de base de données associées ne s'exécuteront pas. La connexion entre le programme et la base de données est-elle rompue ? Le paramètre de connexion à la base de données est-il incorrect ou peut-il s'agir d'un problème de base de données ?
3. Lorsque j'effectue un test ab à haute concurrence, les 2 phénomènes ci-dessus se produisent également. Quelle en est la raison ? Les paramètres liés au pool de connexions sont-ils incorrects ?
Tout d'abord, faites attention au problème du pool de connexions.
mongoose.connect
ne doit être appelé qu'une seule fois. L'objet renvoyé maintient le pool de connexions. S'il est appelé à plusieurs reprises, la connexion sera ouverte et fermée en continu, ce qui affecte considérablement les performances.Après confirmation, vous devez vérifier la pression que vous avez exercée dessus et s'il a occupé toutes les ressources disponibles. Vous pouvez consulter le journal mongodb pour voir combien de connexions sont ouvertes en même temps. Vous pouvez également consulter les ressources restantes de la machine.