การใช้ Memcache อย่างมีประสิทธิภาพด้วย Drupal 7 Multisite


12

ฉันกำลังตั้งค่าอัตราส่วนการเข้าชมที่ 55% สำหรับอินสแตนซ์ memcache ของเรา (v1.4.4) และฉันสงสัยว่าสิ่งที่สามารถทำได้เพื่อปรับปรุงอัตราส่วนการเข้าชม เราอยู่ในการตั้งค่าแบบหลายไซต์ (30 ไซต์ขึ้นไป) พร้อมกับเว็บเซิร์ฟเวอร์สองตัวที่สมดุล มีตัวอย่างของ memcached ในแต่ละเว็บเซิร์ฟเวอร์

ในsettings.phpฉันมี:

$conf['memcache_servers'] = array(
         '11.22.33.44:11211' => 'default',
         '11.22.33.45:11211' => 'default',
      );
$conf['memcache_bins'] = array('cache' => 'default');
$conf['memcache_key_prefix'] = $_SERVER['SERVER_NAME'];

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

หากถังขยะกำลังจะไปคุณจะทราบได้อย่างไรว่า (ตาราง?) ต้องมีถังขยะของตัวเองอย่างไร นี่คือตารางแคชที่ฉันมีในเว็บไซต์ของฉัน:

cache
cache_admin_menu (empty)
cache_block (empty)
cache_bootstrap
cache_field
cache_filter (empty)
cache_form (empty)
cache_image (empty)
cache_media_xml (empty)
cache_menu
cache_page (empty)
cache_path (empty)
cache_token (empty)
cache_update (empty)
cache_views
cache_views_data (empty)
ctools_css_cache (empty)
ctools_object_cache (empty)

นอกจากถังขยะฉันสามารถทำอะไรได้อีกเพื่อปรับปรุงการใช้ memcached

ขอบคุณมาก!


ไซต์ 30+ คุณช่วยแบ่งปันรายละเอียดเกี่ยวกับสิ่งแวดล้อม, PHP mem และ MySql max_allowed_packet ได้หรือไม่และกำลังวางแผนที่จะเปิดตัวไซต์ย่อยจำนวนมากมี 4 แผนที่จะมี 10 แต่ก็ไม่แน่ใจว่า drupal สามารถจัดการได้หรือไม่
GoodSp33d

@Kantu - ฉันต้องการเก็บกระทู้นี้เกี่ยวกับ memcached กับ Drupal หากคุณโพสต์คำถามใหม่ฉันยินดีที่จะชั่งน้ำหนักใน ... หรือตรวจสอบการสนทนาที่คล้ายกันที่นี่หรือบน drupal.org
กม.

ฉันแค่อยากรู้ว่าการกำหนดค่าเซิร์ฟเวอร์ของคุณทำงานเป็นไซต์ย่อย 30 แห่งหายากมาก
GoodSp33d

คำตอบ:


13

หลังจากการวิจัยมากมายนี่คือสิ่งที่ได้ช่วยอัตราส่วนการใช้งานและการใช้งาน memcached ของเรา:

  • memcached ที่อัพเกรดเป็น 1.4.10 (รุ่นล่าสุดพร้อมการปรับปรุงประสิทธิภาพ)
  • รูปแบบและการบีบอัดไบนารีที่เปิดใช้งาน
  • ใช้ค่าเริ่มต้นสำหรับถังขยะ

memcached conf ใน settings.php ของเรามีลักษณะดังนี้:

$conf['memcache_bins'] = array('cache' => 'default');
$conf['memcache_options'] = array(
  Memcached::OPT_COMPRESSION => TRUE,
  Memcached::OPT_BINARY_PROTOCOL => TRUE,
  );
$conf['memcache_persistent'] = TRUE;
$conf['memcache_key_prefix'] = $_SERVER['SERVER_NAME'];

กำไรที่ใหญ่ที่สุด

กำไรที่ยิ่งใหญ่ที่สุดสำหรับเราคือการเปิดใช้การบีบอัดแม้ว่าเอกสารระบุว่าจะเพิ่มรอบ CPU เรามี 4 CPU ที่จัดสรรให้กับ VM ของเราและไม่ได้สังเกตเห็นความแตกต่าง เวลาสำหรับการโทร memcached เริ่มจาก ~ 1250ms ถึง ~ 150ms (ได้รับจาก NewRelic) สำหรับการสร้างเนื้อหา (บทความที่กำหนดเองในกรณีของเรา)

อัตราส่วนการเข้าชม

อัตราส่วนการโจมตีของเราตอนนี้ ~ 70% - ดีกว่า 55% ก่อนหน้านี้ แต่ไม่เงียบ 90% + ที่บางคนรายงาน ... ภารกิจยังคงดำเนินต่อไป (-:

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

อัพเดท - เวอร์ชั่นของโมดูล memcahe

เราเปลี่ยนจากรุ่น 1.0-beta4 เป็น 1.0 และตอนนี้เรามีอัตราส่วนการยิง 87% ฉันต้องรีสตาร์ท memcached เนื่องจากอัตราการเข้าชมไม่เกิน 70% ขณะนี้เรามีการจัดสรร 64MB ให้กับ memcached ในขณะนี้ดังนั้นจึงไม่ใช่เรื่องใหญ่สำหรับเรา


1
ฉันจะตั้งค่าคีย์นำหน้าเป็นรหัสฮาร์ดโค้ดและไม่ขึ้นอยู่กับชื่อเซิร์ฟเวอร์ที่ระบุ ตัวอย่างเช่นหากมีคนเข้าถึงเว็บไซต์ของคุณโดยมีหรือไม่มี www (ซึ่งคุณอาจเปลี่ยนเส้นทางหรือบางสิ่งบางอย่างเป็นเพียงตัวอย่าง) คุณจะจบลงด้วยคำนำหน้าคีย์ที่แตกต่างกันสำหรับแคช อย่างไรก็ตามคุณจะต้องเปลี่ยน settings.php สำหรับแต่ละไซต์อย่างไรก็ตาม
Berdir

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

ขอบคุณที่ชั่งใน @Berdir ฉันได้ตรวจสอบแผ่นคอนกรีตแล้วและจนถึงตอนนี้ชื่อเซิร์ฟเวอร์ในฐานะที่เป็นกุญแจยังไม่เป็นปัญหา แต่ฉันเห็นได้ว่ามันจะอยู่ตรงไหน การขับไล่ต่ำ ~ 170 และมีห้องเหลือ 25% (~ 17MB) ใน memcached มีวิธีการติดตามสาเหตุของการพลาดแคช 30% หรือไม่ แคชลบหรืออย่างอื่น ... ?
กม.

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