Quindi ho un server Google Cloud AppEngine con 2 lavori principali.
- Ogni giorno alle 00:00, scarica molti dati (Firebase / Async), elabora e invia notifiche via HTTP, interagisci con GoogleStorage, ecc.
- Ascolta i diversi tipi di richieste e invia notifiche via HTTP quando ricevuto.
Quindi, a scopo di test, avrei appena generato un nuovo thread per ogni post HTTP o chiamata sincrona in librerie come Google Storage, e mentre questo funziona, non penso che questo scalerà bene e potrebbe causare delle eccezioni di memoria.
Sono preoccupato che dica, ci sono 1000 richieste post / get che devono essere fatte alle 00:00, e quindi se creo 1000 thread, ciò causerà problemi, d'altra parte, potrei scorrere le richieste in un singolo thread, ma quel thread impiegherà molto tempo per terminare.
Ho pensato di usare un Executor che ha una dimensione di ~ 10, in modo che un thread sia sempre disponibile per eseguire l'attività di elaborazione giornaliera e gli altri 9 thread siano disponibili per eventuali richieste che potrebbero entrare.
È un buon approccio? O il threadpool dovrebbe essere ridimensionato dinamicamente o messo in coda?