J'ai besoin d'éclaircissements sur ce qu'est la piscine et ce qu'elle fait. Les docs disent que Sequelize va configurer un pool de connexion lors de l'initialisation, de sorte que vous ne devriez idéalement créer qu'une seule instance par base de données.
var sequelize = new Sequelize('database', 'username', 'password', {
Host: 'localhost',
dialect: 'mysql'|'mariadb'|'sqlite'|'postgres'|'mssql',
pool: {
max: 5,
min: 0,
idle: 10000
},
// SQLite only
storage: 'path/to/database.sqlite'
});
Lorsque votre application doit extraire des données de la base de données, elle crée une connexion à la base de données. La création de cette connexion entraîne une surcharge de temps et de ressources machine pour votre application et la base de données. De nombreuses bibliothèques de bases de données et ORM tenteront de réutiliser les connexions dans la mesure du possible, de manière à ne pas avoir à surcharger l'établissement d'une connexion de base de données à la fois. pool
est la collection de ces connexions réutilisables enregistrées qui, dans votre cas, sont extraites de Sequelize. Votre configuration de
pool: {
max: 5,
min: 0,
idle: 10000
}
reflète que votre piscine devrait:
max: 5
)min: 0
)idle: 10000
)tl; dr: les pools sont une bonne chose pour améliorer les performances de la base de données et de l’application, mais si vous êtes trop agressif avec sa configuration, vous risquez d’avoir un impact négatif sur les performances globales.
la piscine est en train de drainer une erreur
J'ai trouvé ce fil dans ma recherche d'une erreur Sequalize en donnant à mon application node.js: le pool est en train de drainer . Je ne pouvais pas pour la vie de le comprendre. Donc, pour ceux qui suivent mes traces:
Le problème était que je fermais la base de données plus tôt que je ne le pensais, avec la commande sequelize.closeConnections()
. Pour une raison quelconque, au lieu d’une erreur du type "la base de données a été fermée", elle donnait plutôt l’erreur obscure "le pool s’épuise".
Il semble que vous puissiez essayer de mettre pool
à false
pour éviter la création du pool. Voici le tableau des détails de l'API: http://sequelize.readthedocs.org/en/latest/api/sequelize/
[options.pool = {}] Objet Si séquentiel utiliser un pool de connexion . La valeur par défaut est true