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

Optimizar tempo de startup de um projeto .Net

Eae galera tenho uma aplicação em .Net 6.0 é uma API robusta, com conexões a banco de dados, jobs, agendamento de tarefas e etc.

O único problema é que está demorando muito para iniciar(em torno de 10min).

Tenho algumas idéias:

  • Utilizar Lazy na Injeção de dependências
  • Utilizar Lazy na criação dos assemblys
  • Modularizar mais algumas coisas
  • Lazy no automapper
  • addscoped para addsingleton em alguns cenários.

Quais dicas, conselhos ou sugestões vc tem para me dar ?

Carregando publicação patrocinada...
3

É muito difícil falar sem saber extamente tudo o que tem. De qualquer forma posso dizer que há alguma coisa muito grave, ou um requisito muito fora da curva, acho que é mais o primeiro.

Eu nunca na minha vida vi algo assim, nem mesmo quando se rodava softwares complexos em um 386.

Então a solução não passa por pequenas coisas, não adianta eu te falar para usar AOT (e atualizar o .NET já que esta versão não tem mais suporte), ou mesmo botar lazy em tudo que pode ajudar nesse problema, mas só está escondendo o problema real.

Em 10 minutos, bem arquitetado, eu carrego perto de 1TB de dados de SSD para a memória. Nem se sua equipe tiver milhares de programadores por anos eles fariam códigos simples que gerariam esse tempo de espera.

Um dos problemas é que já foi feito sem entender bem o que estava fazendo, caso contrário não estaria acontecendo isso. Essa solução leva anos para arrumar e precisa de muita vontade e dedicação. Isso inclui não saber fazer um profiling para identificar o que está causando isso, pode ser um pequeno detalhe e todo o resto não fazer diferença. Então aprenda isso também, só assim irá direto ao problema em vez de ficar na tentativa e erro ou tentar mudar tudo. Também seria bom aprender sobre observabilidade (sem cair na armadilha da modinha). Pode descobrir que o problema nem é o código e pode ser infra.

O problema pode estar em uso errado de algum framework escolhido, ou até nele mesmo.

De qualquer forma, vale o que eu sempre falo para todo mundo, tem que aprender a computação como um todo, não pode sair fazendo codigozinho só para ver o resultado, programar não é seguir receita de bolo, é entender cada passo do processo e raciocinar sobre o problema usando método científico, fora isso é só gambiarra e enganação.

Se precisar de uma solução urgente não vejo outra solução a não ser contratar um profissional.

Está meio desatualizada mas pode ajudar: https://pt.stackoverflow.com/q/108239/101.

Torço para achar uma solução, se tiver algo a mais para informar pode ser que dê para ajudar mais.

S2


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).

1

Cara essas soluções que apresentei são coisas que dei que ajudariam, mas concordo plenamente em encontrar o causador dessa lentidão. Essa técnica de profiling não conhecia.

Vou olhar e agradeço!