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

Satura rādītājs:

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

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

Video: Kā Web serveri klausās par jauniem pieprasījumiem?
Video: Google Apps Script - Get and Set Values on Google Sheets - YouTube 2024, Aprīlis
Anonim
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.
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:

I am trying to understand the ‘deeper level’ details of how web servers work. I want to know if a server, say Apache, for instance, is continuously polling for new requests or if it works by some sort of interrupt system. If it is an interrupt, what is sparking the interrupt? Is it the network card driver?

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

Atbilde

SuperUser autoram Greg Bowser ir atbilde mums:

The short answer is some sort of interrupt system. Essentially, they use blocking I/O, meaning they sleep (block) while waiting for new data.

  1. The server creates a listening socket and then blocks while waiting for new connections. During this time, the kernel puts the process into an interruptible sleep state and runs other processes. This is an important point; having the process poll continuously would waste CPU resources. The kernel is able to use the system resources more efficiently by blocking the process until there is work for it to do.
  2. When new data arrives on the network, the network card issues an interrupt.
  3. Seeing that there is an interrupt from the network card, the kernel, via the network card driver, reads the new data from the network card and stores it in memory. (This must be done quickly and is generally handled inside the interrupt handler.)
  4. The kernel processes the newly arrived data and associates it with a socket. A process that is blocking on that socket will be marked runnable, meaning that it is now eligible to run. It does not necessarily run immediately (the kernel may decide to run other processes still).
  5. At its leisure, the kernel will wake up the blocked web server process. (Since it is now runnable.)
  6. The web server process continues executing as if no time has passed. Its blocking system call returns and it processes any new data. Then go to step 1.

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.

Ieteicams: