Kuidas veebiserverid kuulavad uusi taotlusi?
Veebiserverite tundmaõppimisel ja nende töötamisel võite olla uudishimulikud, kui nad kuulavad pidevalt taotlusi või ootavad, kuni nad saavad taotleda tegevust. Seda silmas pidades on tänase SuperUser Q&A postituse vastused lugeja uudishimu rahuldamiseks.
Tänane küsimuste ja vastuste seanss saabub meiega kohtades, kus on SuperUser-Stack Exchange'i alajaotis, kogukondlikult juhitav Q&A veebisaitide rühmitus.
Screenshot xmodulo / Linuxi Screenshots (Flickr) viisakalt.
Küsimus
SuperUser lugeja user2202911 tahab teada, kuidas veebiserverid kuulavad uusi päringuid:
Püüan mõista veebiserverite toimimise üksikasjalikke üksikasju. Ma tahan teada, kas server, näiteks Apache, küsitleb pidevalt uusi päringuid või töötab mõne katkestussüsteemi abil. Kui see on katkestus, siis mis see katkestab? Kas see on võrgukaardi draiver?
Kuidas veebiserver kuulab uusi taotlusi?
Vastus
SuperUser'i toetaja Greg Bowseril on meile vastus:
Lühike vastus on mingi katkestussüsteem. Sisuliselt kasutavad nad blokeerivat I / O-d, mis tähendab, et nad magavad (blokeerivad) uute andmete ootamise ajal.
- Server loob kuulamise pesa ja blokeerib siis, kui ootab uusi ühendusi. Selle aja jooksul asetab tuum protsess protsessi katkestatav uni näidata ja käivitada muid protsesse. See on oluline punkt; Protsessiküsitluse pidev pidamine raiskaks protsessori ressursse. Kernel on võimeline süsteemi ressursse tõhusamalt kasutama, blokeerides protsessi seni, kuni selleks on vaja tööd teha.
- Kui võrku saabuvad uued andmed, väljastab võrgukaart katkestuse.
- Nähes, et võrgukaardilt on katkenud, loeb kernel võrgukaardi draiveri kaudu uusi andmeid võrgukaardilt ja salvestab selle mällu. (Seda tuleb teha kiiresti ja seda käsitsetakse üldiselt katkestaja käitleja sees.)
- Tuuma töötleb äsja saabunud andmed ja seostab selle pesaga. Protsess, mis blokeerib selle pistikupesa, märgistatakse jooksvalt, mis tähendab, et see on nüüd kõlblik. See ei pruugi töötada kohe (kernel võib otsustada veel teisi protsesse käivitada).
- Vabal ajal äratab kernel blokeeritud veebiserveri protsessi. (Kuna see on nüüd jooksev.)
- Veebiserveri protsess jätkab täitmist nii, nagu ei ole aega möödunud. Selle blokeerimissüsteemi kõne naaseb ja töötleb uusi andmeid. Siis minge 1. sammu juurde.
Kas teil on midagi lisada selgitusele? Heli on kommentaarides välja lülitatud. Kas soovite lugeda rohkem vastuseid teistelt tech-savvy Stack Exchange'i kasutajatelt? Vaadake siin täielikku arutelu lõiku.