Pools e Recursos Limitados¶
Um pool reutiliza ou limita recursos como conexões, threads de plataforma, buffers ou clientes. Sua propriedade principal costuma ser o limite, não a reutilização. Ele não cria capacidade downstream; tamanho excessivo aumenta contenção.
Modelo de capacidade¶
A Lei de Little relaciona médias de longo prazo em sistema estável:
Ela não dimensiona sozinha, pois tráfego tem rajadas e a cauda de latência importa. Mostra que dependências lentas retêm permissões e elevam a concorrência. Meça tempos de serviço e fila, utilização, timeouts e saturação sob carga representativa.
Executores e filas¶
Trabalho limitado pela CPU costuma se beneficiar de concorrência próxima à capacidade de processamento. Trabalho bloqueante aceita mais tarefas, mas continua limitado por memória, conexões, rate limits e dependências. Fila ilimitada oculta sobrecarga como latência e memória crescentes.
A política de saturação deve decidir entre rejeitar, bloquear o produtor, executar no chamador sob condições seguras, degradar ou enfileirar de forma durável. Tarefas precisam de cancelamento e deadline.
Pools de conexões¶
Conexões são empréstimos com estado. Use-as no menor escopo correto e feche com limpeza estruturada para devolver mesmo sob exceção. Evite chamada remota durante transação e defina timeouts de aquisição e consulta. Detecção de vazamento é diagnóstico, não substituto da disciplina de posse.
Threads virtuais reduzem o custo da espera, mas não adicionam conexões, sockets, memória ou throughput downstream. Limites e admissão continuam necessários.
Vários pools¶
Aquisições aninhadas podem causar deadlock. Documente a ordem, evite enviar e esperar sincronicamente no mesmo pool saturado e reserve capacidade somente se o isolamento justificar subutilização.
Teste saturação, timeout, cancelamento, vazamentos, dependências lentas, encerramento e recuperação. Exponha recursos ativos/inativos, profundidade e idade da fila, latência de aquisição, timeouts e rejeições.