2 risposte
Dipende molto da cosa stai facendo esattamente, ma ci sono alcuni punti che controllarei subito. prima di tutto vedi se stai facendo query al database senza indici - quella è una delle cause più comuni di rallentamenti. se usi mongodb controlla che i tuoi find() abbiano gli indici giusti, con postgresql la stessa cosa. poi guarda se stai facendo troppe operazioni sincrone quando potresti usare l'async/await correttamente, magari carichi interi file in memoria quando potresti fare streaming, o fai n+1 query quando ne basterebbe una con un join. un'altra cosa: se usi express assicurati di non avere middleware inutili o middleware che fanno operazioni pesanti senza necessità.
poi direi di fare profiling vero, non solo indovinare. usa node --prof per generare un isolate file, poi analizzalo con node --prof-process. oppure usa clinic.js che è più facile da leggere, o semplicemente console.time() in giro per il codice per vedere dove passa il tempo. a volte scopri che il collo di bottiglia è dove meno te l'aspetti, tipo una libreria che hai installato che fa qualcosa di pesante dietro le quinte. se fai parecchie computazioni pesanti pensa anche a worker threads per non bloccare l'event loop.
ah e ovviamente, aggiorna node alla versione stabile se sei indietro, assicurati di avere abbastanza memoria disponibile e che non stia facendo memory leak (monitora con process.memoryUsage()). a volte il problema non è neanche il codice ma la configurazione del tuo hosting o il numero di connessioni al db che apri. inizia dal profiling e da lì capisci cosa effettivamente ti sta mangiando le risorse.
Profiling è la tua arma migliore - usa Node.js profiler integrato (o clinic.js se vuoi qualcosa di più potente) per vedere dove stai spendendo davvero il tempo, perché spesso il collo di bottiglia non è dove pensi. Fatto quello, il 90% delle volte è una combinazione di query al database lente, callback che si accumulano, o file I/O sincrone da eliminare.
La tua risposta
Accediper rispondere.