Je réalise une opération groupée où j'upsert 10000 éléments toutes les 2 heures dans ma base de données mongodb. Le code ressemble à ceci
let bulk = models.Product.collection.initializeUnorderedBulkOp();
...
if (bulk.length > 0) {
bulk.find({
"$or": [
{
"updatedAt": {
"$lt": timestamp
}
},
{
"discount": {
"$eq": 0
}
}
]
}).remove()
bulk.execute((error, result) => {
if (error) {
console.error('Erreur lors de l'insertion des produits' + JSON.stringify(error))
}
else {
console.log('Insertion réussie de ' + result.nInserted + ' upserted ' + result.nUpserted + ' matched ' + result.nMatched + ' modified ' + result.nModified + ' removed ' + result.nRemoved)
}
})
}
else {
console.log('Il n'y avait pas d'opérations groupées à exécuter ' + products.length)
}
}
Ma connexion continue d'expirer. Mes options de connexion mongoose ressemblent à ceci
let options = {
mongos: {
ssl: true,
sslValidate: true,
sslCA: ca,
}
}
Je suis bien conscient de ce paramètre de connexion discuté dans d'autres fils de stackoverflow
server: {
socketOptions: {
keepAlive: 300000,
connectTimeoutMS: 30000
}
}
J'ai lu la documentation pour keepAlive et connectTimeoutMS mais comment savoir la bonne valeur pour les deux, Ai-je besoin de socketTimeoutMS également?
Merci pour vos conseils à l'avance
MISE À JOUR 1
Je continue de recevoir cette erreur:
{"name":"MongoError","message":"connect to aws-ap-southeast-1-portal.2.dblayer.com:15284 timed out"}
Maintenant, mes options de connexion ressemblent à ceci //Options pour la base de données compose.io
let options = {
mongos: {
ssl: true,
sslValidate: true,
sslCA: ca,
},
server: {
socketOptions: {
keepAlive: 300000,
connectTimeoutMS: 300000
}
},
replset: {
socketOptions:
{
keepAlive: 300000,
connectTimeoutMS: 300000
}
}
}