Apache 2.2 mpm_worker: มีเธรดมากขึ้นหรือกระบวนการมากขึ้น?


17

เมื่อใช้ Worker MPM ใน Apache คุณสามารถเล่นซอกับจำนวนกระบวนการลูกและจำนวนเธรดเซิร์ฟเวอร์ต่อกระบวนการลูก

อะไรคือข้อดีและข้อเสียของแต่ละ ภายใต้สถานการณ์ใดบ้างที่คุณจะเพิ่มอย่างใดอย่างหนึ่ง

คำตอบ:


25

จนถึงตอนนี้สิ่งเหล่านี้เป็นข้อควรพิจารณาอันดับแรกของฉันเมื่อพิจารณา Threads vs Processes:

  1. เธรดจะใช้หน่วยความจำที่อยู่อาศัยน้อยกว่ากระบวนการมาก ใช่ด้วยไลบรารีที่ลิงก์แบบไดนามิกหน่วยความจำจำนวนมากจะถูกแชร์ระหว่างกระบวนการควบคุม Apache กับกระบวนการลูกอย่างไรก็ตามกระบวนการใหม่แต่ละกระบวนการจะต้องสร้างอินสแตนซ์ทั้งหมดที่คุณเปิดใช้งาน

    สิ่งนี้สามารถทดสอบได้ง่ายโดยเปรียบเทียบการใช้หน่วยความจำของแต่ละกระบวนการที่คุณมีตัวอย่างเช่น 5 กระบวนการและ 1 เธรดแต่ละกระบวนการหรือ 5 กระบวนการและ 25 เธรด ในกรณีของฉันที่นี่กระบวนการของเด็กแต่ละคนใช้เวลาประมาณ 7 MB โดยไม่คำนึงถึงจำนวนเธรด

    + สำหรับเธรด

  2. มันใช้เวลานานในการเริ่มต้นในแง่ของเวลาและรอบ cpu ในการโหลดกระบวนการใหม่กว่าจะทำเธรด สิ่งนี้สามารถทดสอบได้โดยการตรวจสอบจำนวนเฉลี่ยของหน้าที่ให้บริการผ่าน 'ab'

    + สำหรับเธรด

  3. เธรดกระบวนการทั้งหมดขึ้นอยู่กับกระบวนการ .. ข้อกังวลที่ใหญ่ที่สุดที่นี่คือถ้าสิ่งใดเกิดขึ้นกับกระบวนการจะมีผลกับเธรดทั้งหมดที่เกี่ยวข้อง หากคุณกำลังทำงานด้วยกระบวนการเดียวโดยมีเธรดเป็นจำนวนมากดังนั้นเมื่อกระบวนการนั้นสิ้นสุด กระบวนการมากขึ้นจะทำให้เกิดการแยกที่ดีขึ้นและความอดทน "ผิดพลาด" ที่มากขึ้นหากคุณต้องการ

    + สำหรับกระบวนการ

  4. ที่เกี่ยวข้องกับ (3) สำหรับโมดูลเช่น PHP หน่วยความจำของพวกเขาจะถูกโหลดโดยกระบวนการและแชร์ผ่านเธรดทั้งหมด ซึ่งหมายความว่าหากคุณมี php ที่ memory_limit ตั้งไว้ที่ 100Mbs ด้วย 25 เธรดด้านล่างจากนั้นที่โหลดสูงสุดในทางเทคนิคแต่ละเธรดจะสามารถจัดสรรสูงสุด 4MB ต่อวินาที (แน่นอนว่ามันจะไม่เกิดขึ้นด้วยวิธีนี้บางคนจะหมู อดอาหาร)

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

หลักสูตรฉันไม่มีผู้เชี่ยวชาญที่นี่เพราะฉันเพิ่งจะต้องกังวลกับเรื่องนี้เมื่อเร็ว ๆ นี้ดังนั้นฉันหวังว่าจะเห็นคำตอบอื่น ๆ อาจปรากฏขึ้นที่นี่!


1
+1 สำหรับข้อมูลทั่วไปที่ดี ฉันต้องการดูรายละเอียดเชิงลึก / รูปธรรมมากขึ้นถ้าเป็นไปได้
sh-beta
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.