Contenção do MongoDB
A política interna de pool e tempo de execução do Core, os erros DATABASE_POOL_BUSY e DATABASE_OPERATION_TIMEOUT e como recuperar sem repetir escritas.
O backend do Core aplica uma política de contenção de carga sem configuração no App. Atualize os pacotes e republique para ativá-la.
Política
| Parâmetro | Padrão |
|---|---|
maxPoolSize |
4 (modo de performance: 4 / 8 / 16) |
minPoolSize |
0 |
maxConnecting |
2 |
waitQueueTimeoutMS |
2000 ms |
maxTimeMS nos métodos cobertos |
5000 ms |
O Core passa essas opções ao driver com precedência sobre a URI. MONGO_URI continua fornecendo credenciais, banco, TLS, authSource e replica set; sem ela, DB_SERVER/DB_NAME e DB_USER/DB_PASSWORD são suportados. Não há override por env, central.config.js ou central.app.json.
Cobertura
| Operação | maxTimeMS automático |
|---|---|
find, findOne, countDocuments, estimatedDocumentCount, distinct |
Sim |
findOneAnd* |
Sim (sem garantia de ausência de escrita após erro) |
updateOne/Many, replaceOne, deleteOne/Many como queries |
Sim |
aggregate, populate |
Sim |
| Cursores | Comando inicial apenas |
save, create, insertMany, bulkWrite |
Não |
Collection nativa, outro MongoClient/instância Mongoose |
Não garantido |
Limite explícito menor é preservado. Carregue o Core antes de compilar modelos customizados.
Erros
| Código | HTTP | Significado |
|---|---|---|
DATABASE_POOL_BUSY |
503 | Expirou a espera por conexão no pool |
DATABASE_OPERATION_TIMEOUT |
504 | O servidor excedeu o tempo de execução |
Observabilidade
Contadores em memória (conexões em uso, esperando, picos, checkouts, falhas, timeouts e duração de espera) são emitidos a cada 60 s quando há atividade, com appCode, APP_ENVIRONMENT e PID — sem payload, endereço do servidor ou documentos.
Limites
Pool limita paralelismo por processo, não CPU/RAM/I/O nem o total do cluster. Réplicas e rollouts multiplicam o orçamento. Consultas caras continuam pressionando o banco — crie índices e pagine.