Teorico: in che modo i server gestiscono le richieste senza memoria di riserva?

1

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?

    
posta chapinkapa 25.08.2018 - 02:45
fonte

1 risposta

2

Non è completamente chiaro cosa stai chiedendo. Se si desidera che i dettagli tecnici dipendano da un sistema operativo specifico, scheda di rete, driver, combinazione software.

In generale, il TCP è auto limitante, se un pacchetto arriva e il server non può gestirlo a livello di rete per qualsiasi motivo, allora il pacchetto verrà nuovamente inviato, o la connessione fallirà.

Se la rete, la scheda di rete, il driver e il sistema operativo sono tutti ok con la quantità di dati in arrivo, ma il software non può gestirli, potrebbe verificarsi un arresto anomalo con un'eccezione di memoria insufficiente.

Ma più probabilmente rallenterà l'elaborazione dei dati. causando il riempimento del buffer di rete e quindi il flusso TCP per rallentare attraverso la sua auto-limitatezza.

Se fosse UDP, i pacchetti sarebbero stati eliminati

    
risposta data 25.08.2018 - 20:58
fonte

Leggi altre domande sui tag