Scaling Joomla dengan Database read write splitting

9

Saya punya server mysql di Amerika Utara (menggunakan Amazon RDS) dan replika baca. Saya juga punya replika baca untuk wilayah baru - Australia.

Server Australia sangat lambat karena sifat dinamis Joomla membacakan server DB utama di Amerika Utara. Saya sudah mencoba menggunakan proxy mysql untuk ini untuk membagi baca / tulis tapi itu bukan solusi jangka panjang. Proxy Mysql terlihat sudah mati.

Opsi apa lagi yang saya miliki?

Tom
sumber

Jawaban:

2

Joomla (dan CMS serupa lainnya) telah dikembangkan untuk arsitektur LAMP, dengan mempertimbangkan hosting umum. Misalnya latensi rendah antara server Web dan Database.

Amazon RDS dirancang untuk skala database relasional di cloud. Jadi, karena distribusi regional dan redundansi adalah penting, maka diharapkan akan ada lentensi yang lebih tinggi.

Jika Anda memiliki persyaratan khusus untuk meminta Amazon RDS, Anda dapat mengonfigurasi:

  • Joomla dengan MySQL lokal untuk manajemen umum situs (aset statis, mudah ditiru)
  • Koneksi Amazon RDS, koneksi khusus aplikasi untuk pengembangan Anda

Ekstensi pihak ketiga, yang dikembangkan dengan latensi rendah, tidak akan berfungsi dengan Amazon RDS.

Anibal
sumber
Tidak yakin saya mengerti dua poin Anda? Saya akan terus menggunakan RDS, jadi apakah Anda menyarankan Master RDS di Australia? Saya juga dapat memanfaatkan koneksi RDS dengan replika baca dengan komponen khusus saya tetapi tidak dengan inti Joomla. Jadi tidak yakin apa yang Anda maksud dengan koneksi khusus aplikasi. Bisakah Anda jelaskan?
Tom
2

Jika Anda menggunakan versi PHP yang baru saja diperbarui maka Anda mungkin menggunakan driver php mysqlnd. http://us3.php.net/manual/en/book.mysqlnd.php

Mysqlnd memiliki API plugin khusus dan dapat berfungsi dengan cara yang sama adalah proxy mysql - misalnya http://pecl.php.net/package/mysqlnd_ms adalah plugin yang membagi baca dan tulis dan memiliki rilis resmi baru-baru ini 9/2013

Juga perlu diingat, Joomla selalu menulis ke tabel sesi. Menggunakan memcache atau apc hanya menyimpan data sesi dalam cache - bukan metadata sesi.

Anda bisa mendapatkan peningkatan kinerja yang sama dengan menjatuhkan tabel #_sessions Anda dan membuatnya kembali menggunakan mesin data Memory alih-alih innodb atau myisam.

Garyamort
sumber
1

Setiap halaman yang dihasilkan oleh Joomla harus menulis ke tabel sesi.

Jadi saya akan menyarankan untuk menggunakan memcache atau apc untuk manajemen sesi. Itu akan membantu Anda mencapai nol-menulis ke database, maka baca-replika akan cukup untuk sebagian besar halaman.

Shyam
sumber
Itu adalah poin yang sangat bagus. Itu akan membantu penulisan tetapi yang benar-benar penting adalah bagaimana saya menggunakan baca-replika untuk inti Joomla? Saat ini saya hanya melihat proxy mysql atau meretas inti sebagai opsi. Saya kira HAproxy juga merupakan pilihan tetapi itu tidak jelas.
Tom
1. AWS sendiri mendukung replikasi ( aws.amazon.com/rds/faqs/#replication ) 2. Opsi lainnya adalah replikasi bawaan mysql
Shyam
Saya pikir Anda salah paham. Saya sudah menggunakan replikasi dengan RDS. Pertanyaan saya adalah bagaimana saya bisa membagi operasi baca Joomla ke replika baca itu.
Tom
0

Opsi peningkatan kecepatan lainnya adalah dengan menempatkan Nginx di depannya sebagai proxy terbalik. Ini akan mengurangi banyak akses basis data karena halaman umum tidak akan pernah pergi ke joomla dan mysql Tidak dapat menemukan konfigurasi proxy tetapi ini adalah pengaturan dasar

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

tristanbailey
sumber