Quando os clientes fazem determinadas solicitações, nosso serviço envia consultas de agregação ao Mongo. Algumas dessas agregações levam mais tempo do que outras.
Normalmente, isso é bom, mas ocasionalmente várias agregações pesadas serão solicitadas ao mesmo tempo. Na pior das hipóteses, isso faz com que o Mongo pare de responder e outras solicitações (como a inserção de novos documentos) falhem com um tempo limite.
Existe alguma maneira de limitar o número de agregações que o Mongo executará em paralelo?
Idealmente, se 8 agregações estiverem em execução e uma nova solicitação de agregação for feita, o Mongo enfileirará a nova agregação até que uma das outras seja concluída.
A resposta é simples, NÃO. Não no mongodb. Mas você sempre pode fazer isso em seu próprio aplicativo. Basta criar a coleção "lock" onde os aplicativos marcam que farão a agregação. Sistema de tickets para filas.