ประสิทธิภาพของไซต์แคชทำงานไม่ถูกต้อง


8

ป้อนคำอธิบายรูปภาพที่นี่

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

ป้อนคำอธิบายรูปภาพที่นี่

ฉันยังใช้New Relicเพื่อตรวจสอบประสิทธิภาพ นอกจากนี้ยังแสดงให้เห็นว่าการโหลดฐานข้อมูลสูง

และข้อมูล my.cnf

ป้อนคำอธิบายรูปภาพที่นี่

คำตอบ:


8

สไลด์ # 85จากการนำเสนอผลงานของฉันพูดถึงขนาดแพ็คเก็ตสูงสุดใน MySQL คุณต้องเพิ่มค่านั้น SET GLOBAL max_allowed_packet=33554432;หรือเปลี่ยนภายในไฟล์การกำหนดค่าhttps://dev.mysql.com/doc/refman/5.7/th/packet-too-large.html


คำตอบที่เป็นประโยชน์จริงๆ
นาย J

3

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

  1. คุณไม่ได้มีเพียงการเขียนแคช แต่ยังมีการลบแคชอย่างชัดเจน การเขียนแคชที่ล้มเหลวจะส่งผลให้เกิดการเขียนแคชซ้ำและจากนั้นแคชหายไป แต่ไม่ใช่การลบ
  2. นี่คือตาราง cache_bootstrap มีแคชบางตัวที่สามารถมีขนาดใหญ่ แต่โดยปกติแล้วจะไม่ได้มาจากถังขยะนั้น

สาเหตุที่พบบ่อยที่สุดสำหรับรูปแบบนี้คือการเรียก variable_set () ที่เกิดขึ้นในทุก ๆ หน้า ดูที่การลบแคชเหล่านั้นมาจากด้วย xhprof กับ xdebug และการตั้งค่าเบรกพอยต์หรือโดยการเพิ่ม debug_print_backtrace (DEBUG_BACKTRACE_NO_ARGS) ฉันค่อนข้างแน่ใจว่าคุณจะเห็นการเรียก variable_set ()

ปัญหาคือมีแคชส่วนกลางสำหรับตัวแปร แคชทั้งหมดเขียนผลลัพธ์ในการลบแคชและคำขอถัดไปจะอ่าน{variables}ตารางทั้งหมดและเขียนกลับเข้าไปในแคช

นักพัฒนาหลายคนไม่ทราบและกำลังทำสิ่งต่าง ๆ เช่น "การรับรองค่า" โดยการเรียกตัวแปร _set () โดยตรงในไฟล์. โมดูลหรือสถานที่อื่นที่ดำเนินการตามคำขอทั้งหมด


ใช่ .. thats จริงนักพัฒนาส่วนใหญ่แม้ฉันไม่รู้เกี่ยวกับ variable_set () ความจริงที่คุณพูดถึง และฉันจะได้รู้เกี่ยวกับ debug_print_backtrace (DEBUG_BACKTRACE_NO_ARGS) ขอบคุณสำหรับสิ่งนั้น :)
Mr. J

3

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

ลองใช้โมดูลเครื่องมือเพิ่มประสิทธิภาพ Bootstrapมันจะช่วยในการค้นหาระเบียนดังกล่าวและลบออก

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