Kā Web serveri klausās jaunus pieprasījumus?
Mācoties par tīmekļa serveriem un to, kā viņi strādā, jūs varat būt ziņkārīgi, ja viņi pastāvīgi uzklausa pieprasījumus vai arī viņi gaida, kamēr viņi saņems pieprasījumu uzsākt darbību. Paturot to prātā, šodienas SuperUser Q&A ziņojumam ir atbildes, lai apmierinātu lasītāja zinātkāri.
Šodienas jautājumu un atbilžu sesija mums dod pieklājību no SuperUser-Stack Exchange apakšnodaļas, kas ir kopienas orientēta Q & A tīmekļa vietņu grupa.
Ekrānuzņēmums pieklājīgi no xmodulo / Linux Screenshots (Flickr).
Jautājums
SuperUser lasītājs user2202911 vēlas uzzināt, kā tīmekļa serveri klausās jaunus pieprasījumus:
Es cenšos saprast sīkāku informāciju par tīmekļa serveru darbību. Es gribu zināt, vai, piemēram, serveris, piemēram, Apache, nepārtraukti aptaujā jaunus pieprasījumus vai ja tas darbojas ar kādu pārtraukšanas sistēmu. Ja tas ir pārtraukums, kas izraisa pārtraukumu? Vai tas ir tīkla kartes draiveris?
Kā tīmekļa serveris klausās jaunus pieprasījumus?
Atbilde
SuperUser ieguldītājam Gregam Bowser ir atbilde:
Īsā atbilde ir kaut kāda pārtraukšanas sistēma. Būtībā viņi izmanto bloķējošu I / O, kas nozīmē, ka viņi gulē (bloķē), gaidot jaunus datus.
- Serveris izveido klausīšanās ligzdu un pēc tam bloķē, gaidot jaunus savienojumus. Šajā laikā kodols liek procesu pārtraukt miegu norādīt citus procesus. Tas ir svarīgs jautājums; Procesa aptaujas nepārtrauktība būtu atkritumu CPU resursi. Kodols spēj efektīvāk izmantot sistēmas resursus, bloķējot procesu, līdz tiek darīts darbs.
- Kad tīklā nonāk jauni dati, tīkla karte izslēdz pārtraukumu.
- Redzot, ka no tīkla kartes ir pārtraukums, kodols, izmantojot tīkla kartes draiveri, nolasa jaunos datus no tīkla kartes un saglabā to atmiņā. (Tas jādara ātri un parasti tiek apstrādāts pārtraukuma apstrādes laikā.)
- Kodols apstrādā tikko saņemtos datus un saista to ar kontaktligzdu. Process, kas bloķē šo ligzdu, tiks atzīmēts runnable, kas nozīmē, ka tas tagad ir tiesīgs darboties. Tas ne vienmēr darbojas nekavējoties (kodols var nolemt palaist vēl citus procesus).
- Brīvajā laikā kodols pamodīs bloķēto tīmekļa servera procesu. (Tā kā tas tagad ir izmantojams.)
- Tīmekļa servera process turpina darboties tā, it kā nav pagājis laiks. Tā bloķēšanas sistēmas zvans atgriežas un apstrādā visus jaunos datus. Pēc tam dodieties uz 1. darbību.
Vai kaut kas jāpievieno paskaidrojumam? Skaņas izslēgšana komentāros. Vai vēlaties lasīt vairāk atbildes no citiem tehnoloģiju gudriem Stack Exchange lietotājiem? Apskatiet pilnu diskusiju pavedienu šeit.