Početna » kako da » Kako web poslužitelji slušati za nove zahtjeve?

    Kako web poslužitelji slušati za nove zahtjeve?

    Kada učite o web poslužiteljima i kako oni rade, možda ćete biti znatiželjni ako neprestano slušaju zahtjeve ili čekaju dok ne dobiju zahtjev za pokretanje akcije. Imajući to na umu, današnji postovi za pitanja i odgovore tvrtke SuperUser imaju odgovore kako bi zadovoljili čitateljsku znatiželju.

    Današnja sesija pitanja i odgovora dolazi nam ljubaznošću SuperUser-a, podjele Stack Exchangea, grupiranja web-lokacija za pitanja i odgovore u zajednici.

    Snimak je dopušten xmodulo / Linuxovim snimkama zaslona (Flickr).

    Pitanje

    Čitač SuperUser user2202911 želi znati kako web poslužitelji slušaju nove zahtjeve:

    Pokušavam razumjeti detalje "dublje razine" o načinu rada web poslužitelja. Želim znati ima li poslužitelj, na primjer, Apache, na primjer, stalno anketiranje za nove zahtjeve ili ako radi prema nekom sustavu prekida. Ako je to prekid, što je izazvalo prekid? Je li to upravljački program mrežne kartice?

    Kako web poslužitelj sluša za nove zahtjeve?

    Odgovor

    Suradnik SuperUser Greg Bowser ima odgovor za nas:

    Kratak odgovor je neka vrsta sustava prekida. U osnovi, koriste blokiranje I / O, što znači da spavaju (blokiraju) dok čekaju nove podatke.

    1. Poslužitelj stvara utičnicu za slušanje, a zatim blokira dok čeka nove veze. Za to vrijeme, kernel stavlja proces u prekidivi san navesti i pokrenuti druge procese. Ovo je važna točka; Procesna anketa kontinuirano bi trošila CPU resurse. Kernel je u mogućnosti učinkovitije koristiti resurse sustava blokirajući proces sve dok ne dođe do posla.
    2. Kada novi podaci pristignu na mrežu, mrežna kartica izdaje prekid.
    3. Budući da postoji prekid s mrežne kartice, kernel, preko upravljačkog programa mrežne kartice, čita nove podatke s mrežne kartice i pohranjuje ih u memoriju. (To se mora učiniti brzo i općenito se rukuje unutar rukovatelja prekida.)
    4. Kernel obrađuje novopristupljene podatke i povezuje ih s utičnicom. Proces koji blokira taj socket bit će označen kao izvodljiv, što znači da je sada prikladan za pokretanje. Ne mora se odmah pokrenuti odmah (kernel može odlučiti pokrenuti druge procese).
    5. U slobodno vrijeme kernel će probuditi proces blokiranog web poslužitelja. (Budući da je sada izvršivo.)
    6. Proces web poslužitelja nastavlja se izvršavati kao da nema vremena. Njezin pozivni sustav se vraća i obrađuje sve nove podatke. Zatim prijeđite na prvi korak.

    Imate li što dodati objašnjenju? Zvuk isključen u komentarima. Želite li pročitati više odgovora od drugih tehničkih korisnika Stack Exchangea? Pogledajte cjelokupnu temu za raspravu ovdje.