ปรับขนาด Joomla ด้วยฐานข้อมูลอ่านเขียนแยก


9

ฉันมีเซิร์ฟเวอร์ mysql ในอเมริกาเหนือ (ใช้ Amazon RDS) และแบบจำลองการอ่าน ฉันยังได้รับแบบจำลองการอ่านสำหรับภูมิภาคใหม่ - ออสเตรเลียด้วย

เซิร์ฟเวอร์ของออสเตรเลียนั้นทำงานช้าอย่างไร้ความปราณีเนื่องจากธรรมชาติของ Joomla ที่มีการอ่านจากฐานข้อมูลหลักใน N.America ฉันพยายามใช้ mysql proxy เพื่อแยกอ่าน / เขียน แต่นั่นไม่ใช่ทางออกระยะยาว พร็อกซี Mysqlดูเหมือนจะตายได้อย่างมีประสิทธิภาพ

ฉันมีตัวเลือกอื่น ๆ อีกบ้าง?

คำตอบ:


2

Joomla (และ CMS อื่น ๆ ที่คล้ายคลึงกัน) ได้รับการพัฒนาสำหรับสถาปัตยกรรม LAMP โดยคำนึงถึงโฮสติ้งเป็นหลัก เช่นความหน่วงแฝงต่ำระหว่างเว็บเซิร์ฟเวอร์และฐานข้อมูล

Amazon RDS ถูกออกแบบมาเพื่อปรับขนาดฐานข้อมูลเชิงสัมพันธ์ในคลาวด์ ดังนั้นเนื่องจากการกระจายในระดับภูมิภาคและความซ้ำซ้อนเป็นสิ่งสำคัญจึงคาดหวัง lantencies ที่สูงขึ้น

หากคุณมีข้อกำหนดเฉพาะที่ขอ Amazon RDS คุณสามารถกำหนดค่า:

  • Joomla พร้อม MySQL ท้องถิ่นสำหรับการจัดการทั่วไปของไซต์ (สินทรัพย์คงที่ง่ายต่อการทำซ้ำ)
  • การเชื่อมต่อ Amazon RDS เป็นการเชื่อมต่อเฉพาะแอปพลิเคชันสำหรับการพัฒนาของคุณ

ส่วนขยายของบุคคลที่สามซึ่งพัฒนาขึ้นโดยคำนึงถึงเวลาแฝงต่ำจะไม่ทำงานกับ Amazon RDS


ไม่แน่ใจว่าฉันเข้าใจจุดสองจุดของคุณหรือไม่ ฉันจะใช้ RDS ต่อไปดังนั้นคุณจะแนะนำ Master RDS ในออสเตรเลียหรือไม่ นอกจากนี้ฉันยังสามารถมั่นใจได้ว่าการเชื่อมต่อ RDS ด้วยแบบจำลองการอ่านด้วยองค์ประกอบที่กำหนดเองของฉัน แต่ไม่ได้อยู่ในแกน Joomla ดังนั้นไม่แน่ใจว่าคุณหมายถึงอะไรโดยการเชื่อมต่อเฉพาะแอปพลิเคชัน คุณช่วยอธิบายรายละเอียดได้ไหม?
Tom

2

หากคุณใช้ PHP เวอร์ชันล่าสุดอย่างไม่เหมาะสมคุณอาจกำลังใช้ไดรเวอร์ php mysqlnd อยู่ http://us3.php.net/manual/en/book.mysqlnd.php

Mysqlnd มี API ปลั๊กอินที่กำหนดเองและสามารถทำงานได้ในลักษณะเดียวกันคือ mysql proxy - ตัวอย่างเช่นhttp://pecl.php.net/package/mysqlnd_msเป็นปลั๊กอินที่แยกอ่านและเขียนและมีรุ่นล่าสุดอย่างเป็นทางการเมื่อวันที่ 9/2013

โปรดจำไว้ว่า Joomla จะเขียนลงในตารางเซสชันเสมอ การใช้ memcache หรือ apc เพียงแค่เก็บข้อมูลเซสชั่นไว้ในแคชไม่ใช่ข้อมูลเมตาของเซสชัน

คุณสามารถรับประสิทธิภาพที่เพิ่มขึ้นแบบเดียวกันได้โดยวาง #_sessions ตารางของคุณและสร้างใหม่โดยใช้เครื่องมือข้อมูลหน่วยความจำแทน innodb หรือ myisam


1

ทุกหน้าที่สร้างโดย Joomla จะต้องเขียนลงในตารางเซสชั่น

ดังนั้นฉันขอแนะนำให้ใช้ memcache หรือ apc สำหรับการจัดการเซสชั่น ที่จะช่วยให้คุณบรรลุศูนย์การเขียนไปยังฐานข้อมูลดังนั้นการอ่านลอกเลียนแบบจะเพียงพอสำหรับหน้าส่วนใหญ่


นั่นคือจุดที่ยอดเยี่ยม นั่นจะช่วยในการเขียน แต่สิ่งที่สำคัญจริงๆคือฉันจะใช้ read-replica สำหรับคอร์ของ Joomla ได้อย่างไร? ตอนนี้ฉันเห็นเพียง mysql proxy หรือแฮ็คคอร์เป็นตัวเลือก ฉันคิดว่า HAproxy เป็นตัวเลือก แต่ไม่ชัดเจน
Tom

1. AWS สนับสนุนการจำลองแบบเอง ( aws.amazon.com/rds/faqs/#replication ) 2. ตัวเลือกอื่นคือการจำลองแบบในตัว mysql
Shyam

ฉันคิดว่าคุณเข้าใจผิด ฉันกำลังใช้การจำลองแบบกับ RDS อยู่แล้ว คำถามของฉันคือฉันจะแบ่งการอ่าน Joomla ออกเป็นแบบจำลองการอ่านได้อย่างไร
Tom

0

อีกทางเลือกในการปรับปรุงความเร็วคือการวาง Nginx ไว้ด้านหน้ามันเป็น reverse proxy สิ่งนี้จะลดการเข้าถึงฐานข้อมูลเป็นจำนวนมากเนื่องจากหน้าเว็บทั่วไปจะไม่เคยไปที่ joomla และ mysql ไม่พบการกำหนดค่าพร็อกซี แต่สิ่งเหล่านี้เป็นการตั้งค่าพื้นฐาน

http://docs.joomla.org/Nginx

http://www.nginxtips.com/nginx-joomla-friendly-url/

/programming/23960359/how-to-get-nginx-proxy-caching-to-work-with-dynamic-content

https://stackoverflow.com/a/2655023/6096

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