WordPress มีขนาดเท่าไร


34

ด้วย WordPress ใหม่และเป็นคุณสมบัติใหม่ดูเหมือนว่า WordPress มีความสามารถมากกว่าเครื่องมือบล็อกทั่วไป แต่WordPress สเกลที่ใช้กันขนาด 10k -> 100k ต่อวันเป็นอย่างไร

ด้วยผู้ใช้หลายคนส่วนใหญ่จะเป็นกลยุทธ์แคชที่ดี แต่ WordPress มีการพัฒนาดีเพียงใดเพื่อช่วยทำให้สิ่งนี้ง่ายและให้การควบคุมที่คุณต้องการ Fx สามารถแคชส่วนหนึ่งของหน้าและแสดงเฉพาะส่วนที่ผู้ใช้กำหนดเองรองรับการตั้งค่า master / slave db และสิ่งนั้นได้หรือไม่

คำตอบ:


37

เห็นได้ชัดว่าไม่มีอะไรที่ปรับขนาดได้เช่นเดียวกับไฟล์คงที่ที่ให้บริการโดยเว็บเซิร์ฟเวอร์ที่รวดเร็วและ CMS ใด ๆ ที่ต้องคิดออกว่าจะโหลดแล้วโหลดมันจะไม่ทำงานเช่นกัน WordPress หรืออย่างอื่น หนึ่งในปัญหาคือจำนวนการสืบค้นฐานข้อมูลที่จำเป็นต่อคำขอ URL และประสบการณ์ 2 ปีก่อนหน้าของฉันที่ทำงานกับ Drupal และตอนนี้ 2 ปีขึ้นไปกับ WordPress คือ WordPress นั้นดีกว่ามากในแผนกนั้น

ที่กล่าวว่าเกือบจะไม่มีอะไรที่มีอำนาจใด ๆ ที่จะปรับขนาด"ออกจากกล่อง" ; มันคือทั้งหมดที่เกี่ยวกับสิ่งที่คุณสามารถทำได้เมื่อความต้องการความยืดหยุ่นของคุณเพิ่มขึ้น?

ในตอนท้ายของ"ปริมาณการใช้ข้อมูลจำนวนมาก"มีปลั๊กอินและการผนวกรวมที่ยอดเยี่ยมกับ CDN ราคาไม่แพงคุณสามารถทำงานได้ดีในงบประมาณที่ไม่มีไอทีและงบประมาณโฮสติ้งต่ำ ต่อไปนี้เป็นคำถามและคำตอบอื่น ๆ ในการตรวจสอบ:

มีตัวเลือกสำหรับการทำโปรไฟล์เพื่อระบุคอขวดของประสิทธิภาพ :

เมื่อคอขวดที่มีการระบุคุณสามารถจะเพิ่มประสิทธิภาพของภาษาท้องถิ่นกับสิ่งที่ต้องการTransients API คำถาม & คำตอบนี้แสดงตัวอย่างที่สามารถปรับให้เหมาะสมโดยใช้ Transients API และแสดงวิธี:

หากคุณต้องการดึงปืนใหญ่ออกไปคุณสามารถกำหนดค่าMemcached , HyperDB , Nginxและ / หรืออื่น ๆ เพื่อเร่งความเร็วของสิ่งต่าง ๆ ได้ (ดูเหมือนว่าสิ่งหลังนั้นกำลังพัฒนาไปสู่การปรับขนาดที่น่าทึ่งจาก WordPress):

และในที่สุดก็มีเว็บโฮสติ้งที่เน้น WordPress ซึ่งมีความเชี่ยวชาญด้านประสิทธิภาพเช่นWP Engine , ZippyKidและอื่น ๆ :

ดังนั้นข่าวดีก็คือทั้งหมดของเครื่องชั่งน้ำหนักอย่างมาก ; จากปลายฟรีที่ต่ำมากและง่ายดายด้วยความซับซ้อนทางเทคนิคและค่าใช้จ่ายเพิ่มขึ้นเมื่อปริมาณการใช้งานเพิ่มขึ้นอย่างมาก เริ่มต้นเล็ก ๆ ด้วย WordPress และมันจะยอดเยี่ยม หากปริมาณการใช้งานของคุณเพิ่มขึ้นและคุณกำลังสร้างรายได้อย่างสมเหตุสมผลคุณจะพบว่ามันมีผลต่อต้นทุนอย่างมากเมื่อคุณต้องการ

อย่างน้อย IMO :)


ขอบคุณสำหรับการตอบสนองอย่างละเอียดเช่นนี้ ฉันสงสัยว่า WordPress APIs ทำงานอย่างไรกับการแคชส่วนต่าง ๆ ของหน้า - ดังนั้นคุณจะต้องสร้างส่วนเฉพาะของผู้ใช้ไม่ใช่ทั้งหน้าสำหรับผู้ใช้ที่เข้าสู่ระบบหรือใช้ Edge Side รวมสำหรับไซต์ที่มีการเข้าชมสูง
googletorp

ไมค์คุณเป็นสัตว์ร้าย! ทุกที่ที่ฉันไปที่ไซต์นี้ฉันเจอคำตอบของคุณและพวกเขาก็ยอดเยี่ยมมาก!
dgw

@ googletorp : คุณสามารถทำได้อย่างแน่นอนเพียงแค่ใช้รหัสที่ประดิษฐ์ขึ้นมาเอง ฉันชอบที่จะดูว่าสามารถพัฒนากรอบงานเพื่อให้ง่ายขึ้นได้หรือไม่ แต่ตอนนี้ฉันมุ่งเน้นไปที่การพยายามใช้ฟิลด์โพสต์ที่กำหนดเองที่มีประสิทธิภาพและมีคุณลักษณะหลากหลาย อาจจะเร็ว ๆ นี้ :) @ Voyagerfan5761 : ขอบคุณ :)
MikeSchinkel

kiragiannis.com/cloud-computing/…ซึ่งอาจนำการวัดมาสู่การสนทนา
Geo

4
  1. อย่าคาดหวังมากกับโฮสติ้งที่แชร์ - อย่าตำหนิ WordPress สำหรับความเชื่องช้าหากคุณอยู่ในโฮสต์ที่แชร์ โฮสต์ที่ใช้ร่วมกันอาจยัดเยียดบัญชี 1000 บัญชีลงในเซิร์ฟเวอร์เดียว ดังนั้นคุณสามารถใช้เวลาทั้งวันเพื่อเพิ่มประสิทธิภาพบัญชี $ 10 / เดือนและจะไม่สำคัญ ระวังเรื่องการตลาดด้วย - เพียงเพราะมันบอกว่า "คลาวด์" ไม่ได้หมายความว่าคุณไม่ได้แชร์เซิร์ฟเวอร์เดียวกับคน 100 หรือ 1,000 คน

  2. ฉันไม่คิดว่าแคชปลั๊กอินจำเป็นในตอนนี้ หากคุณดูซอร์สโค้ด WP มีการแคชขั้นสูงอยู่ในแกนแล้ว แคชของแคชของแคช - ระวังนี่อาจเป็นการต่อต้าน

  3. สิ่งสำคัญที่ทำให้คุณช้าลงคือการสืบค้น MySQL ที่ช้าและ WordPress ไม่ต้องเสียเวลาที่นี่ อย่างไรก็ตามฉันต้อง "จำกัด " ความคิดเห็นของฉันเพราะฉันมีความคิดเห็นมากกว่า 50,000 ข้อ (สิ่งนี้ได้รับการแก้ไขแล้วหรือยัง) หากคุณทำสิ่งใดผิดปกติ (เช่นหมวดหมู่ 1,000 หมวดหมู่หรือไม่) ที่อาจเป็นปัญหาเช่นกัน

  4. ฉันใช้ Linode 512 กับ NginX และ "top" แสดง PHP และ NginX ทำงานของพวกเขาในเวลาน้อยกว่า 1/100 ของวินาทีต่อการร้องขอ เวลา CPU เกือบทั้งหมดเชื่อมโยงกับ MySQL คุณสามารถให้บริการ 1 ล้านหน้าต่อเดือนด้วย $ 20 Linode แต่เมื่อคุณเริ่มเพิ่มปลั๊กอินและรูปถ่ายฉันคิดว่าคุณจะต้องมี "1GB" Linode จากมุมมองของฉันมันค่อนข้างเป็นเส้นตรง: หากจำนวนหน้าที่มีการเปิดเพิ่มเป็นสองเท่าเพียงแค่เพิ่มขนาดของ Linode ของคุณ

ข้อจำกัดความรับผิดชอบ: ฉันไม่ได้ทำงานกับ Linode


อัปเดต (~ 2 ปีต่อมา) เนื่องจากคุณต้องการแคชบางส่วนของหน้าเว็บด้วย PHP นี่เป็นวิธีง่ายๆที่ฉันใช้ซึ่งรวดเร็วอย่างน่าประหลาดใจ ฉันแคชชิ้นส่วน / ส่วนต่าง ๆ หลายหน้าต่อหน้าภายใน 1/100 ของวินาที ดูเหมือนว่า ramdisk จะทำให้เร็วขึ้น แต่ก็เร็วมากสำหรับความต้องการของฉัน:

$cache_file = "./cache/portion-1". $since; // maybe round() this $since timestamp
$cache_life = 1000; // seconds to keep this cached
$filemtime = filemtime($cache_file);  // returns FALSE if file does not exist
if (!$filemtime or (time() - $filemtime >= $cache_life)) {

    // heavy lifting starts
    $output = 'Heavy!';
    // heavy lifting ends

    if (!file_put_contents($cache_file,$output,LOCK_EX)) { echo 'error'; } // save the cache    
    echo $output;

} else { 

    // load from cache
    $output = file_get_contents($cache_file); 
    echo $output;        
} 

0

ในที่สุดมี 3 สิ่งที่ทำให้ WordPress ช้าลงและพวกเขาก็ลดลงไปจนถึงสิ่งนี้:

  • โฮสติ้งสแต็ค - คุณต้องมีโฮสต์ที่ดีพร้อมซอฟต์แวร์ล่าสุด - PHP 7, Nginx, วานิช, Redis, fail2ban และ PerconaDB ล้วนแล้วแต่เป็นตัวเลือกที่ดี
  • ไม่มีการสแกนตาราง - ปลั๊กอินจำนวนมากเขียนโดยนักเขียนมือสมัครเล่นที่ไม่ทราบว่าการสแกนตารางคืออะไร จำเป็นต้องมีสองสิ่งเพื่อหลีกเลี่ยงการสแกนตาราง - ดัชนีที่ใช้งานได้และแบบสอบถามที่เขียนในลักษณะที่สามารถใช้ดัชนีได้
  • มีคำสั่ง SQL ไม่มากหรือน้อยใน PHP ลูป - โค้ดปลั๊กอินบางตัวได้รับการทดสอบอย่างชัดเจนในไซต์เล็ก ๆ เท่านั้นและด้วยเหตุผลใดก็ตามอย่างใดอย่างหนึ่งจะวนซ้ำผ่านทุกผลิตภัณฑ์ในฐานข้อมูลของคุณและทำการเรียก SQL ใหม่สำหรับแต่ละผลิตภัณฑ์ / โพสต์ คุณต้องการคำสั่ง SQL น้อยกว่า 100 ต่อหน้า - ฟังดูเหมือนมาก แต่มันไม่จริงและด้วย <100 คุณจะได้รับ TTFB ประมาณ 200ms ที่ไม่ได้ใช้งาน

เมื่อคุณมีตำแหน่งด้านบนคุณสามารถเพิ่มการแคชได้เช่นวานิช CDN การแคชเพจเป็นต้น

หากคุณต้องการย่อส่วนคุณสามารถสร้างคลัสเตอร์โดยใช้ PerconaDB XtraDB สำหรับฐานข้อมูลและ Unison สำหรับไฟล์ ด้วยวิธีนี้คุณสามารถมี 1 โหนดเป็น wp-admin และ cron runner ของคุณและโหนดอื่น ๆ ที่ให้บริการปริมาณการใช้งานเว็บที่อยู่เบื้องหลังตัวโหลดบาลานซ์

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