การแคช bootstrap ของ Drupal


10

ฉันอยากรู้ว่าถ้าใครพยายาม "แคช" กระบวนการบูทสแตรปใน Drupal

โดยปกติ Drupal จะรัน bootstrap 7 ขั้นตอนในแต่ละคำขอ แต่บางทีในระบบการใช้งานที่ปรับใช้แล้วใครจะ "ทำ" กับสิ่งเหล่านี้บางส่วนหรือทั้งหมด?

คำแนะนำที่เป็นไปได้ที่ฉันมีอยู่ในใจอาจเป็น

  1. การเรียงลำดับสถานะ bootstrapped และผสานเข้ากับ memcache
  2. สคริปต์สามารถสร้างแพตช์สำหรับ bootstrap.inc ซึ่งจะเข้ารหัสข้อมูลบางอย่างลงในไฟล์
  3. ฉันเชื่อว่าDavid Straussได้พยายามที่จะทำให้ Drupal ที่เป็น bootstrapped ทำงานบน libevent
  4. ความบ้าคลั่งอื่น ๆ ?

มีความพยายามอะไรบ้างและเป็นที่รู้กันว่าค่อนข้างเชื่อถือได้?


นี่เกี่ยวข้องกับคำถามของฉันเกี่ยวกับการรวบรวม Drupal: drupal.stackexchange.com/q/11738/2916
ปรับแต่ง

คำตอบ:


12

PHP เป็นสถาปัตยกรรมอะไรที่ใช้ร่วมกัน ที่มีข้อดีและข้อเสีย

ข้อเสียอย่างหนึ่งคือมันไม่ง่ายที่จะทำสิ่งนี้ มีสถานะไม่มากนักที่สามารถเก็บไว้ที่ไหนสักแห่ง

ฉันทำการทดสอบอย่างรวดเร็วและเมื่อลงชื่อเข้าใช้แล้ว Boostrap ดูเหมือนจะใช้เวลาประมาณ 17% ของเวลาทั้งหมดและมากกว่า 50% นั้นกำลังโหลดไฟล์. mod และ. inc ทั้งหมด นั่นไม่ใช่สิ่งที่คุณสามารถเก็บไว้ใน memcache นอกจากนี้ดูเหมือนว่าจะไม่สำคัญหากฉันใช้ memcache หรือแคชฐานข้อมูล

ฉันพยายามรับผลลัพธ์บางอย่างเมื่อเปิดใช้งานแคชหน้า แต่ Xhprof ดูเหมือนจะไม่ส่งคืนผลลัพธ์ที่เชื่อถือได้ ดูเหมือนว่าทั้งหมดจะเร็วเกินไป แต่ถึงอย่างนั้นส่วนที่ใหญ่ที่สุดเกี่ยวข้องกับการเรียกใช้ hooks init / exit และโหลดไฟล์ ฉันพบปัญหาที่น่าสนใจที่นั่น: ดูเหมือนว่าโมดูลผู้ใช้กำลังชะลอการตอบสนองของหน้าที่แคชไว้อย่างจริงจังเนื่องจากจะเรียกรีจิสทรีเนื่องจากตัวควบคุมเอนทิตีในไฟล์. โมดูล

ที่กล่าวว่าเดวิดสเตราส์แสดงให้เห็นงานทดลองในโคเปนเฮเกนที่ซึ่งเขาสร้างสแนปช็อตหน่วยความจำหลังจากทำการบู๊ตแล้วกลับไปที่หน้านั้นทันทีที่ได้รับหน้า เขาใช้ Drupal 6 เพื่อสิ่งนั้น หลังจากดูตัวเลขด้านบนแล้วฉันจินตนาการว่าประสิทธิภาพที่เพิ่มขึ้นจากการทำสิ่งนี้ใน Drupal 7 จะเล็กลงเล็กน้อย เหตุผลหนึ่งก็คือการเชื่อมต่อฐานข้อมูลนั้นขี้เกียจโหลด (และคุณสามารถเข้าถึงได้ค่อนข้างไกลใน bootstrap เมื่อใช้เช่น Memcache ก่อนที่คุณจะต้องเรียกใช้คิวรีแรก) และมีแคชจำนวนมาก

สิ่งที่แย่จริงๆใน Drupal 7 คือเลเยอร์เรนเดอร์ที่มีอาร์เรย์ขนาดใหญ่เหล่านี้และการวนซ้ำและลูปที่ไม่มีที่สิ้นสุด นั่นเป็นการยกเลิกการแสดงทั้งหมดที่เข้าสู่ Drupal 7 มาดูกันว่ามันมีลักษณะอย่างไรใน Drupal 8 ถ้า Twig ทำให้มันกลายเป็นแกนกลาง

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


4
ฉันจึงรักที่มีคุณบนเว็บไซต์ @Berdir นั้น)
Letharion

Alex Bronstein พูดถึงมันในระหว่างการวิ่งว่ามันค่อนข้างช้าในการรวมไฟล์ tpl.php แม้จะใช้ APC ก็ต้องใช้ stat - แต่ Twig คอมไพล์ไปยังคลาสเพื่อที่จะชนะในหน้าเช่น node + ข้อคิดเห็นมากมาย เราจะเห็น

ฉันเดาว่าคุณสามารถสร้างระบบที่สำหรับหน้าแคชคุณสร้างกฎการเขียนซ้ำและวางไว้ใน. htaccess พร้อมด้วยหน้า html เพื่อเลี่ยง PHP อย่างสมบูรณ์ อาจไม่คุ้มค่ากับปัญหา: IIS, nginx, ผู้ใช้ที่เข้าสู่ระบบ ...
Bart

1
@Bart: คุณเพิ่งสร้าง Boost ขึ้นมาใหม่: drupal.org/project/boost :)
Berdir

5

Nope เป็น David Strauss ผู้ทดลองใช้ kargo-event (ปัจจุบันเรียกว่า Kellner) ที่https://code.launchpad.net/~fourkitchens/pressflow/6-eventedแต่ฉันสงสัยว่ามีอะไรร้ายแรงออกมา

Drupal 7 จะมีจำนวนมากของการบูตที่เก็บไว้ชั่วคราวแล้วมีความเป็นcache_bootstrapถังสำหรับการที่ คุณสามารถใส่ลงใน memcached

คุณสามารถไปลงน้ำและลดการโหลดรหัสด้วยการย้ายรหัส Drupal จำนวนมากไปยัง C. Damien และ dhthwy สร้างส่วนขยาย PHP ที่http://drupal.org/project/drupal_php_extทำได้ไม่มากนัก หรือทำฮิปฮอป ฉันไม่ทราบสถานะปัจจุบันของ hiphop & Drupal 7

อย่างไรก็ตามในตอนท้ายของวันคุณต้องมองอย่างหนักเกี่ยวกับต้นทุนทางวิศวกรรมของการพูดการทำงานของ hiphop กับ Drupal 7 (และผู้ควบคุม!) และเปรียบเทียบกับการเช่าเซิร์ฟเวอร์อีกสองสามเครื่อง ถ้าคุณสามารถบันทึกได้พูด 5% ของเซิร์ฟเวอร์ของคุณและคุณมีเซิร์ฟเวอร์ 100,000 เครื่องไปเลย แต่คุณเป็น Facebook ไหม ระมัดระวังและประหยัดด้วยการปรับให้เหมาะสม


ขอขอบคุณฉันได้อัปเดตคำถามและลบชื่อของคุณออกแล้ว :) ฉันรู้ว่าในหลาย ๆ กรณีมีวิธีที่มีประสิทธิภาพมากกว่าในการจัดการกับการแสดง
Letharion

1

เห็นการนำเสนอที่น่าสนใจเกี่ยวกับกรมทางหลวง (Dynamic วัตถุ Handler) ในการพบปะ High Performance Drupal ในระยะสั้นเขาพูดเกี่ยวกับ bootstrapping drupal อย่างรวดเร็วโดยใช้มัน ได้รับความสนใจรอบเครื่องหมาย 15:30 Autoloadบนเตียรอยด์สั้น ๆ กับrunkitทำหน้าที่เช่นกัน QA ที่เครื่องหมาย 33:00

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