29Jul
Apgūstot tīmekļa serverus un to darbību, jums var būt interesanti, ja viņi nepārtraukti klausās pieprasījumus vai arī viņi gaida, līdz viņi saņem pieprasījumu, lai sāktu darboties. Paturot to prātā, šodienas SuperUser Q & amai ir atbildes, lai apmierinātu lasītāju interesi.
Šodienas jautājums &Atbildes sesija mums priecājas par SuperUser - Stack Exchange, kas ir kopienas un Q & A tīmekļa vietņu grupa.
Screenshot pieklājīgi no xmodulo / Linux ekrānuzņēmumiem( 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 izprast "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 atbalstītājam Greg Bowser mums ir atbilde:
Īsā atbilde ir kaut kāda 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.
- Serveris izveido klausīšanās ligzdu un pēc tam bloķē, gaidot jaunus savienojumus.Šajā laikā kodols pārvērš procesu pārtraucamā miega stāvoklī 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ā.
- Kad jaunie dati ienāk tīklā, tīkla karte izdara pārtraukumu.
- Ņemot vērā, ka tīkla karte ir pārtraukta, kodols ar tīkla kartes draiveri nolasa jaunos datus no tīkla kartes un saglabā to atmiņā.(Tas jādara ātri, un to parasti apstrādā pārtraucošajā apstrādātājā.)
- Kodols apstrādā jaunizveidotos datus un saista tos ar kontaktligzdu. Process, kas bloķē šo ligzdu, tiks atzīmēts kā "skrūvējams", 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).
- Savas izklaides laikā kodols pamodos bloķēto tīmekļa servera procesu.(Tā kā tas tagad ir runnable.)
- Web servera process turpina izpildīt tā, it kā nav laika pagājis. Tās bloķēšanas sistēmas zvans atgriežas un apstrādā visus jaunos datus. Tad pārejiet uz 1. darbību.
Vai kaut kas jāpievieno paskaidrojumam? Skatieties komentāros. Vēlaties lasīt citas atbildes no citiem tehnoloģiju savvy Stack Exchange lietotājiem?Šeit skatiet pilnu diskusiju pavedienu.