Executando verificação de segurança...
1

**"Problemas de Performance com Threads no Spring? Ajuda com Lógica Assíncrona!"** 🚀

Olá, pessoal!

Estou enfrentando um problema de performance ao implementar lógica assíncrona no consumo de APIs. A ideia é processar um dado enquanto busco informações adicionais em uma API, para depois fazer o merge no final. No entanto, ao usar threads para isso, percebi que o desempenho não está melhorando como esperado.

Nos dashboards, notei que o uso de sockets (ainda não entendo muito bem sobre isso) se eleva consideravelmente, e em vez de otimizar o processamento, acabo criando um gargalo. Estou utilizando Java 17 com Spring e já tentei tanto um executor customizado quanto o padrão do Spring, mas nenhum solucionou o problema.

Pelo que analisei, o real problema parece estar no esgotamento de recursos. Alguém teria alguma dica de estudo ou direcionamento para resolver esse tipo de situação?

Agradeço desde já! 🚀

Carregando publicação patrocinada...
2

A ideia é processar um dado enquanto busco informações adicionais em uma API, para depois fazer o merge no final.

Quanto tempo demora pra processar esse dado?

Se não for um processamento extremamente complexo com milhões e milhões de cálculos esse tempo é praticamente instantâneo.

Quanto tempo demora para consultar a API?

Se for uma unica chamada à uma API externa podemos considerar cerca de 40ms. Isso é uma eternidade na computação.

Qual o real problema?

Sem informações suficientes para entender o problema por completo só posso fazer a constatação que você está abrindo uma thread para fazer algo que demora muito mais que o resto do processamento. Se você aguardar essa requisição completar ela sempre será um gargalo.

Se forem várias chamadas faz sentido fazer uma pool e disparar todas ao mesmo tempo

Mas uma única chamada? de acordo com as informações que me falou pode fazer sincronamente que não vai fazer diferença

A única coisa que vejo que faria diferença seria não esperar essa chamada terminar no processamento principal (responder de forma assúicrona), mas depende de como seu software está construído

1

basicamente o processameto de dados leva cerca 70ms, e a api chamada ao fim tem um timeout de 300ms porem responde entre 100 e 250ms.

1

Eu não tenho certeza que entendi exatamente o problema mas acho que você tem que pesquisar por cron job.

Geralmente cron job é melhor para servers que schedule task.