โฮมเพจ » ทำอย่างไร » เว็บเซิร์ฟเวอร์ฟังคำขอใหม่ได้อย่างไร

    เว็บเซิร์ฟเวอร์ฟังคำขอใหม่ได้อย่างไร

    เมื่อเรียนรู้เกี่ยวกับเว็บเซิร์ฟเวอร์และวิธีการทำงานคุณอาจสงสัยว่าพวกเขากำลังรับฟังคำขออย่างต่อเนื่องหรือรอจนกว่าพวกเขาจะได้รับคำขอให้ดำเนินการ เมื่อคำนึงถึงเรื่องนี้แล้วคำถาม & คำตอบ SuperUser ของวันนี้มีคำตอบให้ผู้อ่านอยากรู้อยากเห็น.

    เซสชั่นคำถามและคำตอบในวันนี้มาถึงเราด้วยความอนุเคราะห์จาก SuperUser - แผนกย่อยของ Exchange Exchange ซึ่งเป็นกลุ่มที่ขับเคลื่อนด้วยชุมชนของเว็บไซต์ถาม - ตอบ.

    มารยาทหน้าจอของ xmodulo / Linux ภาพหน้าจอ (Flickr).

    คำถาม

    ผู้อ่าน SuperUser ผู้ใช้ 2202911 ต้องการทราบว่าเว็บเซิร์ฟเวอร์ฟังการร้องขอใหม่:

    ฉันกำลังพยายามที่จะเข้าใจรายละเอียด 'ระดับลึก' ของการทำงานของเว็บเซิร์ฟเวอร์ ฉันต้องการทราบว่าเซิร์ฟเวอร์พูดว่า Apache ตัวอย่างเช่นทำการสำรวจอย่างต่อเนื่องสำหรับคำขอใหม่หรือถ้ามันทำงานโดยระบบขัดจังหวะบางประเภท ถ้าเป็นการขัดจังหวะอะไรจะทำให้เกิดการขัดจังหวะ มันเป็นไดรเวอร์การ์ดเครือข่ายหรือไม่?

    เว็บเซิร์ฟเวอร์รับฟังคำขอใหม่อย่างไร?

    คำตอบ

    ผู้สนับสนุน SuperUser Greg Bowser มีคำตอบให้เรา:

    คำตอบสั้น ๆ คือระบบอินเตอร์รัปต์บางประเภท โดยพื้นฐานแล้วพวกเขาใช้การบล็อก I / O ซึ่งหมายความว่าพวกเขาหลับ (บล็อก) ในขณะที่รอข้อมูลใหม่.

    1. เซิร์ฟเวอร์สร้างซ็อกเก็ตการฟังจากนั้นบล็อกขณะรอการเชื่อมต่อใหม่ ในช่วงเวลานี้เคอร์เนลทำให้กระบวนการเป็น การนอนหลับขัดจังหวะ ระบุและเรียกใช้กระบวนการอื่น ๆ นี่คือจุดสำคัญ การมีโพลกระบวนการอย่างต่อเนื่องจะทำให้สิ้นเปลืองทรัพยากรของ CPU เคอร์เนลสามารถใช้ทรัพยากรระบบได้อย่างมีประสิทธิภาพมากขึ้นโดยการปิดกั้นกระบวนการจนกว่าจะมีงานที่ต้องทำ.
    2. เมื่อมีข้อมูลใหม่เข้ามาในเครือข่ายการ์ดเครือข่ายจะขัดจังหวะการทำงาน.
    3. เห็นว่ามีการขัดจังหวะจากการ์ดเครือข่ายเคอร์เนลผ่านไดรเวอร์การ์ดเครือข่ายอ่านข้อมูลใหม่จากการ์ดเครือข่ายและเก็บไว้ในหน่วยความจำ (ต้องดำเนินการอย่างรวดเร็วและจัดการโดยทั่วไปภายในตัวจัดการขัดจังหวะ)
    4. เคอร์เนลประมวลผลข้อมูลที่เพิ่งมาถึงและเชื่อมโยงกับซ็อกเก็ต กระบวนการที่ปิดกั้นซ็อกเก็ตนั้นจะถูกทำเครื่องหมายเรียกใช้ไม่ได้ซึ่งหมายความว่าตอนนี้มีสิทธิ์เรียกใช้ ไม่จำเป็นต้องรันทันที (เคอร์เนลอาจตัดสินใจที่จะใช้กระบวนการอื่น ๆ ).
    5. เคอร์เนลจะปลุกกระบวนการเว็บเซิร์ฟเวอร์ที่ถูกบล็อก (เนื่องจากสามารถรันได้ในขณะนี้)
    6. กระบวนการเซิร์ฟเวอร์เว็บดำเนินการต่อราวกับไม่มีเวลาผ่านไป การเรียกระบบการบล็อกของมันจะส่งคืนและประมวลผลข้อมูลใหม่ใด ๆ จากนั้นไปที่ขั้นตอนที่ 1.

    มีสิ่งที่จะเพิ่มคำอธิบายหรือไม่ ปิดเสียงในความคิดเห็น ต้องการอ่านคำตอบเพิ่มเติมจากผู้ใช้ Stack Exchange คนอื่นหรือไม่ ลองอ่านหัวข้อสนทนาเต็มได้ที่นี่.