Veritabanı okuma yazma bölme ile Joomla ölçeklendirme


9

Kuzey Amerika'da (Amazon RDS kullanarak) bir mysql sunucusu ve bir okuma kopyası var. Ayrıca yeni bir bölge olan Avustralya için okuma kopyası var.

Avustralya sunucusu, Joomla'nın N.America'daki ana DB sunucusunu okumasının dinamik yapısı nedeniyle vahşice yavaştır. Bu okuma / yazma bölmek için mysql proxy kullanmaya çalıştım ama bu uzun vadeli bir çözüm değil. Mysql proxy etkin bir şekilde ölü gibi görünüyor.

Başka hangi seçeneklerim var?

Yanıtlar:


2

Joomla (ve diğer benzer CMS'ler), ortak barındırma düşünülerek bir LAMP mimarisi için geliştirilmiştir. Web sunucusu ve veritabanı arasındaki düşük gecikme süresi.

Amazon RDS, buluttaki ilişkisel bir veritabanını ölçeklendirmek için tasarlanmıştır. Dolayısıyla, bölgesel dağılım ve artıklık önemli olduğu için daha yüksek lansmanlar beklenmektedir.

Amazon RDS için özel gereksinimleriniz varsa, şunları yapılandırabilirsiniz:

  • Site genel yönetimi için yerel bir MySQL ile Joomla (statik varlıklar, çoğaltılması kolay)
  • Amazon RDS bağlantısı, geliştirmeniz için uygulamaya özel bir bağlantı

Düşük gecikme süresi göz önünde bulundurularak geliştirilen üçüncü taraf uzantıları Amazon RDS ile çalışmayacaktır.


İki noktanızı anladığımdan emin değil misiniz? RDS kullanmaya devam edeceğim, bu yüzden Avustralya'da Master RDS öneriyor musunuz? Ayrıca özel bileşenlerimle okuma çoğaltmasıyla bir RDS bağlantısı kullanabilirim, ancak Joomla çekirdeği ile değil. Uygulamaya özel bir bağlantı ile ne demek istediğinizden emin değilsiniz. Lütfen biraz açıklayabilir misiniz?
Tom

2

PHP terbiyeli yeni bir sürümünü kullanıyorsanız o zaman muhtemelen php mysqlnd sürücüsü kullanıyorsunuz. http://us3.php.net/manual/en/book.mysqlnd.php

Mysqlnd'nin özel bir eklenti API'sı vardır ve aynı şekilde çalışabilir mysql proxy'dir - örneğin http://pecl.php.net/package/mysqlnd_ms , okuma ve yazma yapan ve son resmi bir sürümü olan bir eklentidir 9/2013

Unutmayın, Joomla her zaman oturum tablosuna yazar. Memcache veya apc kullanmak oturum verilerini yalnızca önbellekte saklar - oturum meta verilerini saklamaz.

Aynı performans artışını #_sessions tablonuzu bırakarak innodb veya myisam yerine Memory data engine kullanarak yeniden oluşturabilirsiniz.


1

Joomla tarafından oluşturulan her sayfanın oturum tablosuna yazması gerekir.

Bu yüzden oturum yönetimi için memcache veya apc kullanmanızı öneririm. Bu veritabanına sıfır yazma elde etmenize yardımcı olacaktır, bu nedenle okuma çoğaltma sayfaların çoğu için yeterli olacaktır.


Bu mükemmel bir nokta. Bu yazımlara yardımcı olacak, ancak asıl önemli olan Joomla'nın çekirdeği için okuma kopyasını nasıl kullanacağım? Şu anda sadece mysql proxy'yi görüyorum ya da çekirdeği hack olarak görüyorum. HAproxy'nin de bir seçenek olduğunu düşünüyorum ama bu o kadar net değil.
Tom

1. AWS'nin kendisi çoğaltmayı destekler ( aws.amazon.com/rds/faqs/#replication ) 2. Diğer seçenek mysql yerleşik çoğaltmasıdır
Shyam

Bence yanlış anlıyorsun. Zaten RDS ile çoğaltma kullanıyorum. Benim sorum Joomla okuma işlemlerini o okuma kopyasına nasıl bölebilirim.
Tom

0

Başka bir hız iyileştirme seçeneği, Nginx'i önüne bir ters proxy olarak koymak olacaktır. Ortak sayfalar joomla ve mysql'ye asla gitmeyeceği için bu, veritabanı erişimini çok azaltacaktır Proxy yapılandırmasını bulamıyorum ancak bunlar temel kurulum

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.