Pular para conteúdo

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:

concurrency = throughput * average time in system

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.