Jak poslouchají webové servery nové požadavky?
Když se dozvíte o webových serverech a jak fungují, možná budete zvědaví, zda neustále poslouchají žádosti nebo zda čekají, až obdrží požadavek na akci. S ohledem na to má dnešní příspěvek SuperUser Q & A odpovědi na uspokojení zvědavosti čtenáře.
Dnešní zasedání Otázky a odpovědi nás přichází s laskavým svolením SuperUser - podřízené rozdělení Stack Exchange, které je založeno na komunitě prostřednictvím skupin webových stránek.
Screenshot s laskavým svolením screenshotů xmodulo / Linux (Flickr).
Otázka
Čtečka SuperUser user2202911 chce vědět, jak webové servery poslouchají nové požadavky:
Snažím se pochopit detaily o "hlubší úrovni", jak fungují webové servery. Chci vědět, jestli server, například Apache, neustále vyhledává nové žádosti nebo funguje nějakým systémem přerušení. Je-li to přerušení, co vyvolává přerušení? Je to ovladač síťové karty?
Jak webový server naslouchá novým požadavkům?
Odpověď
Příspěvek SuperUser Greg Bowser má pro nás odpověď:
Krátká odpověď je nějaký systém přerušení. V podstatě používají blokování I / O, což znamená, že spí (blokují) při čekání na nová data.
- Server vytvoří zásuvku pro poslech a poté blokuje při čekání na nová připojení. Během této doby jádro dává proces do jednoho přerušení spánku stav a spouští jiné procesy. To je důležitý bod; nepřetržitý průběh průzkumu procesu by způsobil ztráty zdrojů CPU. Jádro je schopno efektivněji využívat systémové prostředky tím, že zablokuje proces, dokud nebude pracovat.
- Když do sítě přicházejí nová data, síťová karta vydá přerušení.
- Když zjistíte, že je síťová karta přerušena, jádro prostřednictvím ovladače síťové karty přečte nová data ze síťové karty a uloží je do paměti. (To musí být provedeno rychle a je obecně řešeno uvnitř obslužného programu přerušení.)
- Jádro zpracovává nově přijímaná data a přidružuje je ke soketu. Proces blokující tento soket bude označen jako spouštěcí, což znamená, že je nyní možné spustit. Není nutně okamžitě spuštěn (jádro se může rozhodnout, že další procesy budou spuštěny).
- Ve svém volném čase jádro probudí blokovaný proces webového serveru. (Jelikož je nyní možné spustit.)
- Proces webového serveru pokračuje v provádění, jako kdyby uplynul čas. Jeho blokovací systémový hovor se vrátí a zpracovává všechna nová data. Pak přejděte ke kroku 1.
Musíte něco přidat k vysvětlení? Vyjměte v komentářích. Chcete se dozvědět více odpovědí od ostatních uživatelů technologie Stack Exchange? Podívejte se na celý diskusní příspěvek zde.