Sto cercando di capire come i server gestiscono molte richieste quando iniziano a esaurire la RAM.
Supponiamo di avere un server con 1 GB di RAM inattiva. Supponiamo che sia stato bombardato da 1024 richieste in 1 secondo e ogni richiesta ha inviato oltre 1 MB di dati. Supponiamo che il server sia stupido e non ha inviato una risposta al client fino a quando tutti i pacchetti tcp non sono stati caricati in memoria e non sono stati deallocati fino a quando non hanno risposto a tutte le richieste.
Facciamo anche finta che non ci siano stati sovraccarichi di memoria aggiuntivi oltre a leggere la richiesta in memoria.
A questo punto, il server non ha memoria libera. Cosa succederebbe se ricevesse 1024 richieste in più il secondo successivo? Anche se il server avesse terminato di inviare tutto al client, immagino che con la garbage collection / deallocation della memoria ci possa volere molto più del tempo necessario prima che arrivino i successivi 1024 req.
Il server avrebbe semplicemente perso tutti i pacchetti TCP che lo stavano colpendo sulla sua porta? In tal caso, il cliente potrebbe percepirlo come una congestione della rete o un guasto totale della rete? Se lo percepivano come congestione della rete e se alcuni pacchetti stavano attraversando, il client avrebbe tentato di inviare nuovamente pacchetti potenzialmente persi? Come gestirà il server questo?