2 respostas

★ Melhor resposta

Depende muito do que você está fazendo exatamente, mas tem alguns pontos que eu verificaria na hora. primeiro de tudo vê se você está fazendo query no database sem índices - essa é uma das causas mais comuns de lentidão. se você usa mongodb verifica que seus find() têm os índices certos, com postgresql a mesma coisa. depois vê se você está fazendo muitas operações síncronas quando você poderia usar async/await direito, talvez carregue arquivos inteiros na memória quando você poderia fazer streaming, ou faz n+1 query quando bastariam uma com um join. outra coisa: se você usa express garante que você não tem middleware inútil ou middleware que faz operações pesadas sem necessidade.

depois eu diria para fazer profiling de verdade, não só ficar chutando. usa node --prof para gerar um isolate file, depois analisa com node --prof-process. ou usa clinic.js que é mais fácil de ler, ou simplesmente console.time() espalhado pelo código para ver onde passa o tempo. às vezes você descobre que o gargalo é onde menos você esperava, tipo uma biblioteca que você instalou que faz algo pesado por trás dos panos. se você faz várias computações pesadas pensa também em worker threads para não bloquear a event loop.

ah e óbvio, atualiza node para a versão estável se você está atrasada, garante que você tem memória suficiente disponível e que não está fazendo memory leak (monitora com process.memoryUsage()). às vezes o problema nem é o código mas a configuração do seu hosting ou o número de conexões no db que você abre. começa pelo profiling e daí você entende o que de verdade está consumindo suas recursos.

Sim, verdade, os índices do banco de dados são fundamentais, mas pela mecânica do code posso te dizer que muitas vezes o problema também está no nível da aplicação - tipo se você tá fazendo operações síncronas pesadas na main thread, node trava e tudo fica lento. Tenta fazer profiling com `node --prof` pra ver onde você tá gastando tempo, e se achar gargalos pesados move tudo pra worker threads ou passa pra operações assincronas com async/await em vez de promises concatenadas mal. As dependências npm às vezes também são um desastre - verifica se tem alguma particularmente inchada que você consegue substituir, porque eu já vi muita gente carregando bibliotecas que fazem coisas que você resolveria em poucas linhas.

Sua resposta

Entrarpara responder.