เว็บเซิร์ฟเวอร์ฟังคำขอใหม่ได้อย่างไร
เมื่อเรียนรู้เกี่ยวกับเว็บเซิร์ฟเวอร์และวิธีการทำงานคุณอาจสงสัยว่าพวกเขากำลังรับฟังคำขออย่างต่อเนื่องหรือรอจนกว่าพวกเขาจะได้รับคำขอให้ดำเนินการ เมื่อคำนึงถึงเรื่องนี้แล้วคำถาม & คำตอบ SuperUser ของวันนี้มีคำตอบให้ผู้อ่านอยากรู้อยากเห็น.
เซสชั่นคำถามและคำตอบในวันนี้มาถึงเราด้วยความอนุเคราะห์จาก SuperUser - แผนกย่อยของ Exchange Exchange ซึ่งเป็นกลุ่มที่ขับเคลื่อนด้วยชุมชนของเว็บไซต์ถาม - ตอบ.
มารยาทหน้าจอของ xmodulo / Linux ภาพหน้าจอ (Flickr).
คำถาม
ผู้อ่าน SuperUser ผู้ใช้ 2202911 ต้องการทราบว่าเว็บเซิร์ฟเวอร์ฟังการร้องขอใหม่:
ฉันกำลังพยายามที่จะเข้าใจรายละเอียด 'ระดับลึก' ของการทำงานของเว็บเซิร์ฟเวอร์ ฉันต้องการทราบว่าเซิร์ฟเวอร์พูดว่า Apache ตัวอย่างเช่นทำการสำรวจอย่างต่อเนื่องสำหรับคำขอใหม่หรือถ้ามันทำงานโดยระบบขัดจังหวะบางประเภท ถ้าเป็นการขัดจังหวะอะไรจะทำให้เกิดการขัดจังหวะ มันเป็นไดรเวอร์การ์ดเครือข่ายหรือไม่?
เว็บเซิร์ฟเวอร์รับฟังคำขอใหม่อย่างไร?
คำตอบ
ผู้สนับสนุน SuperUser Greg Bowser มีคำตอบให้เรา:
คำตอบสั้น ๆ คือระบบอินเตอร์รัปต์บางประเภท โดยพื้นฐานแล้วพวกเขาใช้การบล็อก I / O ซึ่งหมายความว่าพวกเขาหลับ (บล็อก) ในขณะที่รอข้อมูลใหม่.
- เซิร์ฟเวอร์สร้างซ็อกเก็ตการฟังจากนั้นบล็อกขณะรอการเชื่อมต่อใหม่ ในช่วงเวลานี้เคอร์เนลทำให้กระบวนการเป็น การนอนหลับขัดจังหวะ ระบุและเรียกใช้กระบวนการอื่น ๆ นี่คือจุดสำคัญ การมีโพลกระบวนการอย่างต่อเนื่องจะทำให้สิ้นเปลืองทรัพยากรของ CPU เคอร์เนลสามารถใช้ทรัพยากรระบบได้อย่างมีประสิทธิภาพมากขึ้นโดยการปิดกั้นกระบวนการจนกว่าจะมีงานที่ต้องทำ.
- เมื่อมีข้อมูลใหม่เข้ามาในเครือข่ายการ์ดเครือข่ายจะขัดจังหวะการทำงาน.
- เห็นว่ามีการขัดจังหวะจากการ์ดเครือข่ายเคอร์เนลผ่านไดรเวอร์การ์ดเครือข่ายอ่านข้อมูลใหม่จากการ์ดเครือข่ายและเก็บไว้ในหน่วยความจำ (ต้องดำเนินการอย่างรวดเร็วและจัดการโดยทั่วไปภายในตัวจัดการขัดจังหวะ)
- เคอร์เนลประมวลผลข้อมูลที่เพิ่งมาถึงและเชื่อมโยงกับซ็อกเก็ต กระบวนการที่ปิดกั้นซ็อกเก็ตนั้นจะถูกทำเครื่องหมายเรียกใช้ไม่ได้ซึ่งหมายความว่าตอนนี้มีสิทธิ์เรียกใช้ ไม่จำเป็นต้องรันทันที (เคอร์เนลอาจตัดสินใจที่จะใช้กระบวนการอื่น ๆ ).
- เคอร์เนลจะปลุกกระบวนการเว็บเซิร์ฟเวอร์ที่ถูกบล็อก (เนื่องจากสามารถรันได้ในขณะนี้)
- กระบวนการเซิร์ฟเวอร์เว็บดำเนินการต่อราวกับไม่มีเวลาผ่านไป การเรียกระบบการบล็อกของมันจะส่งคืนและประมวลผลข้อมูลใหม่ใด ๆ จากนั้นไปที่ขั้นตอนที่ 1.
มีสิ่งที่จะเพิ่มคำอธิบายหรือไม่ ปิดเสียงในความคิดเห็น ต้องการอ่านคำตอบเพิ่มเติมจากผู้ใช้ Stack Exchange คนอื่นหรือไม่ ลองอ่านหัวข้อสนทนาเต็มได้ที่นี่.