Nginx worker blocca il thread in attesa di PHP?


0

Sembra che i thread di lavoro nginx possano gestire altre connessioni in attesa di dati dal client o mentre il buffer di output è pieno:

https://www.nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale/

Ma gestiscono altre connessioni mentre attendono che PHP generi l'output?

Esiste ulteriore documentazione sul funzionamento interno di nginx?


Bene, praticamente per tutte le app di rete, ogni coppia richiesta / risposta rappresenta il proprio thread (o crea un processo anziché eseguire un nuovo thread all'interno del processo esistente), quindi sì, più thread possono eseguire il rendering dell'output per le loro risposte mentre altri thread sono in uno stato diverso (forse ricevendo, forse inviando una risposta, ecc.).
Frank Thomas,

significa che lo stesso thread che ha richiesto a PHP di produrre output può fare altre connessioni nel frattempo?
wutzebaer,

no, ogni nuova richiesta crea un nuovo thread (o processo biforcuto, che credo sia l'approccio NginX) specificamente per quella richiesta e il relativo responsel associato, e li eseguirà nello stesso momento in cui viene costruita la risposta precedente. Le CPU eseguono thread di istruzioni, quindi un thread può fare sempre esattamente una cosa alla volta. I processi possono consistere in più thread che lavorano in parallelo su CPU / core diversi, ma ogni thread sta facendo esattamente una cosa alla volta. ogni volta che le cose vengono fatte in parallelo, ci sono più thread o più processi (o entrambi).
Frank Thomas,

mh hai letto di nginx? La funzione principale di nginx è quella di gestire più richieste con un singolo thread
wutzebaer,

nessuna CPU esistente può farlo. stai fraintendendo qualcosa.
Frank Thomas,
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.