If-Koubou

Kā Web serveri klausās par jauniem pieprasījumiem?

Kā Web serveri klausās par jauniem pieprasījumiem? (Kā)

Apgūstot tīmekļa serverus un kā viņi strādā, jums var būt interesanti, ja tie nepārtraukti klausās pieprasījumus vai arī viņi gaida, kamēr viņi saņem pieprasījumu, lai sāktu rīkoties. Ņemot to vērā, šodienas SuperUser Q & A ziņai ir atbildes, lai apmierinātu lasītāju interesi.

Šodienas jautājumu un atbilžu sesija mums priecājas par SuperUser - Stack Exchange dalību, kas ir kopienas vadīta Q & A tīmekļa vietņu grupa.

Ekrānuzņēmums pieklājīgi no xmodulo / Linux ekrānuzņēmumiem (Flickr).

Jautājums

SuperUser lasītājs user2202911 vēlas zināt, kā tīmekļa serveri klausās jaunus pieprasījumus:

Es cenšos saprast "dziļāka līmeņa" informāciju par to, kā darbojas tīmekļa serveri. Es gribu uzzināt, vai serveris, teiksim, piemēram, Apache, nepārtraukti aptaujas jauniem pieprasījumiem vai ja tas darbojas ar kāda veida pārtraucēšanas sistēmu. Ja tas ir pārtraukums, kas izraisa pārtraukt? Vai tas ir tīkla kartes draiveris?

Kā tīmekļa serveris klausās jaunus pieprasījumus?

Atbilde

SuperUser autoram Greg Bowser ir atbilde mums:

Īsā atbilde ir sava veida pārtrauktā sistēma. Būtībā viņi izmanto bloķējošu I / O, kas nozīmē, ka viņi gulstas (bloķē), gaidot jaunus datus.

  1. Serveris izveido klausīšanās ligzdu un pēc tam bloķē, gaidot jaunus savienojumus. Šajā laikā kodols ievieto procesu pārtraucams miegs valsts un vada citus procesus. Tas ir svarīgs jautājums; procesa aptauja nepārtraukti iztukšotu CPU resursus. Kernel spēj efektīvāk izmantot sistēmas resursus, bloķējot procesu, kamēr tam nav jāstrādā.
  2. Ja tīklā tiek saņemti jauni dati, tīkla karte izdara pārtraukumu.
  3. Ja tīkla karte tiek pārtraukta, kodols ar 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ārtrauktās apstrādes laikā.)
  4. Kodols apstrādā jaunpieņemtos datus un saista tos ar kontaktligzdu. Process, kas tiek bloķēts šajā ligzdā, tiks atzīmēts ar runnable, kas nozīmē, ka tas tagad ir piemērots rādīšanai. Tas ne vienmēr sāk darboties nekavējoties (kodols var nolemt palaist citus procesus).
  5. Savā brīvajā laikā kodols pamodīsies bloķētā tīmekļa servera procesu. (Tā kā tagad ir runnable.)
  6. Tīmekļa servera process turpina izpildīt, it kā laiks nav pagājis. Tās bloķēšanas sistēmas zvans atgriežas un apstrādā visus jaunos datus. Pēc tam dodieties uz 1. darbību.

Vai kaut ko pievienot paskaidrojumam? Skatieties komentāros. Vēlaties lasīt citas atbildes no citiem tehnoloģiju savvy Stack Exchange lietotājiem? Šeit skatiet pilnu diskusiju pavedienu.