Cosa succede alle richieste a un servizio interrotto con SIGSTOP


8

Se si invia un SIGSTOP a un server Web, il kernel dice semplicemente allo stack di rete di bloccare / sospendere tutte le connessioni ai socket di quel server fino a quando non viene continuato? Sembra che i valori di timeout del server non contino; aspetterà indefinitamente, ma come?

Le richieste rimarranno nel buffer socket indefinitamente? Cosa succede se il server Web riceve tonnellate di richieste? Cosa succede quando il buffer del socket si riempie?

Risposte:


5

Dal punto di vista di qualsiasi parte del sistema che non si occupa dello stato e delle statistiche del processo, un processo che viene interrotto (cioè non verrà pianificato fino a quando non riceve un SIGCONT) è indistinguibile da un processo in esecuzione, ma non risponde a una query specifica. Ad esempio, lo stack di rete funziona allo stesso modo se il processo viene arrestato o sta funzionando (utilizzando il tempo della CPU) ma non effettua alcuna chiamata di sistema o viene bloccato in alcune chiamate di sistema che non sono sbloccate dalla rete che ha origine evento (ad es. in attesa di leggere da una pipe), ecc.

Mentre il processo è interrotto, non esiste un timeout nel processo. Di solito non ci sono timeout nello stack di rete: il pacchetto è stato ricevuto dalla macchina, anche se non è arrivato alla macchina. Per quanto riguarda ad esempio la trasmissione TCP, il pacchetto è stato ricevuto e spetta all'applicazione rispondere.

Se il buffer del socket si riempie, lo stack di rete inizierà a eliminare i pacchetti.

Non vi è alcun motivo per cui il comportamento dello stack di rete dipenda dallo stato del processo. Il processo potrebbe uscire dallo stato di arresto in qualsiasi momento. Potrebbero esserci più processi in ascolto su un socket, quindi qualsiasi decisione basata sullo stato del processo dovrebbe tenerne conto tutti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.