ในการติดตั้งเริ่มต้นใด ๆ Apache 2 มาพร้อมกับ keepAlive แต่เมื่อดูที่เซิร์ฟเวอร์อื่นโมดูล keepAlive ก็เปิดอยู่
ดังนั้นฉันจะรู้ได้อย่างไรว่า keepAlive นั้นเหมาะกับฉันหรือไม่ ฉันจะหาตัวอย่างที่ดีเกี่ยวกับการกำหนดค่านี้ได้จากที่ใด
ในการติดตั้งเริ่มต้นใด ๆ Apache 2 มาพร้อมกับ keepAlive แต่เมื่อดูที่เซิร์ฟเวอร์อื่นโมดูล keepAlive ก็เปิดอยู่
ดังนั้นฉันจะรู้ได้อย่างไรว่า keepAlive นั้นเหมาะกับฉันหรือไม่ ฉันจะหาตัวอย่างที่ดีเกี่ยวกับการกำหนดค่านี้ได้จากที่ใด
คำตอบ:
มีคำตอบที่ดีอยู่แล้ว 2 ข้อ แต่ปัญหาในชีวิตจริงที่สำคัญที่สุดอาจยังไม่ได้กล่าวถึง
ก่อนอื่น OP อาจต้องการอ่านคำตอบก่อนหน้านี้ 2 คำตอบและโพสต์บล็อกเล็ก ๆ นี้เพื่อทำความเข้าใจว่า keepalives คืออะไร (ผู้เขียนไม่ได้อธิบายอย่างละเอียดในส่วนเกี่ยวกับ TCPI / IP ที่ได้รับ "เร็ว" ยิ่งการเชื่อมต่อเปิดนานขึ้นจริง ๆ แล้วการเชื่อมต่อที่ยาวนานยิ่งขึ้นได้รับประโยชน์จากการปรับขนาดหน้าต่าง IPแต่เอฟเฟกต์จะไม่สำคัญ ขนาดใหญ่หรือผลิตภัณฑ์ที่มีความล่าช้าแบนด์วิดธ์มีขนาดใหญ่ผิดปกติ)
อาร์กิวเมนต์ที่สำคัญต่อ HTTP Keepalive เมื่อใช้ Apacheคือมันบล็อกกระบวนการของ Apache เช่นลูกค้าที่ใช้ Keepalives จะป้องกันไม่ให้กระบวนการ Apache ของเขา 'บริการลูกค้าอื่น ๆ จนกว่าลูกค้าจะปิดการเชื่อมต่อหรือหมดเวลาที่จะถึง ในช่วงเวลาเดียวกันอินสแตนซ์ Apache นี้อาจให้บริการการเชื่อมต่ออื่น ๆ อีกมากมาย
ตอนนี้การกำหนดค่า Apache ที่ใช้กันทั่วไปคือPrefork MPMและล่าม PHP / Perl / Python และรหัสแอปพลิเคชันในภาษาที่กล่าวถึง ในกรณีนี้แต่ละกระบวนการ Apache จะ "หนัก" ในแง่ที่ว่ามันใช้ RAM หลายเมกะไบต์ (Apache เชื่อมโยงกับล่ามและรหัสแอปพลิเคชัน) สิ่งนี้รวมถึงการปิดกั้นอินสแตนซ์ Apache แต่ละอันที่ไม่มีประสิทธิภาพ
วิธีแก้ปัญหาทั่วไปคือการใช้เซิร์ฟเวอร์ Apache 2 เครื่อง (ทั้งบนเซิร์ฟเวอร์จริงเดียวกันหรือบนเซิร์ฟเวอร์ 2 เครื่องตามต้องการ) ด้วยการกำหนดค่าที่แตกต่างกัน:
จากนั้นคุณสามารถขยายการแยกเนื้อหาแบบไดนามิกและแบบคงที่นี้เมื่อจำเป็นตัวอย่างเช่นโดย:
วิธีการเกี่ยวกับอีกเพื่อหลีกเลี่ยงการปิดกั้น Apacheคือการใช้ balancer โหลดกับการจัดการการเชื่อมต่ออย่างชาญฉลาดเช่นPerlbal
.. และอีกมากมาย :-)
Keepalives อาจดีในบางกรณีพวกเขาอาจไม่ดีในผู้อื่น พวกเขาลดเวลาและความพยายามในการตั้งค่าการเชื่อมต่อใหม่ แต่พวกเขาผูกทรัพยากรเซิร์ฟเวอร์สำหรับระยะเวลาของการหมดเวลาแบบ keepalive ตัวอย่าง:
อย่างที่คุณเห็น KeepAliveTimeout จะมีบทบาทสำคัญในการเพิ่มประสิทธิภาพของเซิร์ฟเวอร์ของคุณ
ดูรูปแบบการใช้งานและตัดสินใจด้วยตัวเอง
คุณควรใช้ KeepAlive On
ดู:
http://httpd.apache.org/docs/2.0/mod/core.html#keepalive
ด้วยวิธีนี้เบราว์เซอร์จะใช้การเชื่อมต่อ TCP เดี่ยวอีกครั้งเพื่อส่งแบบสอบถามจำนวนมาก โดยปกติเว็บไซต์จะมีองค์ประกอบหลายอย่าง (หน้า HTML, รหัส JavaScript, รูปภาพ) ตราบใดที่ทรัพยากรเหล่านี้อยู่ในโดเมนเดียวกันดังนั้นจึงสามารถให้บริการโดยเซิร์ฟเวอร์เดียวกันการเชื่อมต่อ KeepAlive ให้ประสิทธิภาพที่เพิ่มขึ้นอย่างมหาศาลเนื่องจากเบราว์เซอร์ไม่จำเป็นต้องสร้างการเชื่อมต่อ TCP ใหม่
เบราว์เซอร์โดยทั่วไปจะเปิดการเชื่อมต่อแบบขนานประมาณ 3 โดเมน สมมุติว่าคุณมี 18 วัตถุในเว็บไซต์ของคุณ เบราว์เซอร์จะเปิดการเชื่อมต่อ 3 ครั้งและจะดาวน์โหลด 6 วัตถุในแต่ละการเชื่อมต่อโดยใช้โหมด KeepAlive หากไม่มี KeepAlive จะต้องเปิดการเชื่อมต่อ 18 TCP ซึ่งช้ามาก
เบราว์เซอร์ที่ทันสมัยส่วนใหญ่หรือทั้งหมดนั้นเป็นไปตามมาตรฐาน HTTP / 1.1 ดังนั้นจึงควรใช้งานได้
พร็อกซี HTTP บางอย่างเช่น Squid ไม่สอดคล้องกับ HTTP / 1.1 แต่พวกเขาร้องขอให้ใช้การเชื่อมต่อ KeepAlive