iBaffiPro ha scritto:
la stringa infatti arriva da questo codice
String passwordLunghezzaMassima = StringUtils.repeat("a", 1000000000);
che manda in errore l'applicazione.
Ma io continuo a non capire: dove fai tutto questo? Non dirmi "in uno unit-test". Questi test per verificare un uso "malevolo" delle risorse NON vanno fatti con degli unit-test. Anche perché così metti solo in difficoltà l'ambiente di esecuzione degli unit-test.
E poi se hai l'infrastruttura MVC mock per i test, temo (presumo, probabilmente) che non verifichi quei limiti che ho detto prima di cui ci sono default sensati. Ma non sono sicuro.
iBaffiPro ha scritto:
Il fatto che Spring Boot 2 abbia questi strumenti è molto buono ma ad un certo punto il server raggiunge comunque i suoi limiti quindi non pensi che sia prudente informare l'utente/l'amministratore in qualche modo?
Ti ho già detto prima che Spring Boot applica già dei limiti con i default indicati sopra. Quindi non puoi fare un POST ad un controller passando es. 1GB di roba.
iBaffiPro ha scritto:
Il tuo blog, quando raggiunge 1000000 di visite in contemporanea, forse anche prima ma non ridere ho messo un numero a caso, cosa accade? Hai previsto questo caso limite? Anche solo sapere che le risorse sono venute a mancare a mio avviso è utile.
Inoltre java non mette proprio niente a disposizione per gestire/risolvere questo problema?
Allora: 1000000 visite
contemporanee è un numero enorme, altissimo. Ma metti anche solo 10000.
Se vuoi davvero gestire carichi elevati, l'approccio è ben diverso. Si deve partire già dall'inizio, PRIMA di sviluppare l'applicazione. Prevedendo ad esempio l'utilizzo di database che possono scalare meglio in "orizzontale" (es. MongoDB ecc...), ipotizzando magari l'utilizzo di meccanismi di caching (es. con Redis o altro) per velocizzare certe operazioni, distribuendo il carico su più macchine mettendo davanti un load-balancer. Ma anche a livello architetturale, facendo magari più microservizi ciascuno orientato ad un singolo aspetto/concetto (es. in un e-commerce fare un microservizio SOLO per generare e inviare le fatture in PDF ai clienti), mettendo in comunicazione i microservizi tramite chiamate HTTP o tramite meccanismi di code (RabbitMQ, Apache Kafka, ecc..).
Tutto questo richiede tempo, competenze, studio e poi negli aspetti pratici: soldi e personale addetto a gestire poi tutto questo continuamente. E quindi va ben oltre la tua situazione attuale del "provo a fare la mia prima applicazione Spring Boot che vediamo cosa esce...". Ci siamo capiti?
iBaffiPro ha scritto:
I cicli try non contemplano questo caso limite.
I try/catch qui non c'entrano proprio un piffero ..