web-dev-qa-db-ja.com

データベースの読み取りと書き込みの分割によるJoomlaのスケーリング

北米のmysqlサーバー(Amazon RDSを使用)とリードレプリカがあります。新しいリージョン-オーストラリアのリードレプリカも持っています。

オーストラリアのサーバーは、JoomlaがN.AmericaのメインDBサーバーを読み取る動的な性質を持つため、非常に遅いです。これにmysqlプロキシを使用して読み取り/書き込みを分割しようとしましたが、これは長期的な解決策ではありません。 Mysqlプロキシ は実質的に死んでいるように見えます。

他にどのようなオプションがありますか?

9
Tom

最近のバージョンのPHPを使用している場合は、php mysqlndドライバを使用している可能性があります。 http://us3.php.net/manual/en/book.mysqlnd。 php

MysqlndにはカスタムプラグインAPIがあり、mysqlプロキシと同じように機能できます。たとえば http://pecl.php.net/package/mysqlnd_ms は、読み取りと書き込みを分割して、最近の公式リリース9/2013

また、Joomlaは常にセッションテーブルに書き込みます。 memcacheまたはapcを使用すると、セッションメタデータではなく、セッションデータがキャッシュに格納されます。

#_sessionsテーブルを削除し、innodbやmyisamの代わりにメモリデータエンジンを使用してテーブルを再作成することで、同じパフォーマンス向上を得ることができます。

2
garyamort

Joomla(および他の同様のCMS)は、一般的なホスティングを念頭に置いて、LAMPアーキテクチャ用に開発されました。例えば。 Webサーバーとデータベース間の低遅延。

Amazon RDSは、クラウド内のリレーショナルデータベースをスケーリングするように設計されています。したがって、地域的な分散と冗長性が重要であるため、より高い待ち時間が予想されます。

Amazon RDSを求める特定の要件がある場合は、以下を構成できます。

  • サイトの一般管理用のローカルMySQLを備えたJoomla(静的アセット、複製が容易)
  • Amazon RDS接続、開発用のアプリケーション固有の接続

低レイテンシを考慮して開発されたサードパーティの拡張機能は、Amazon RDSでは機能しません。

2
Anibal

Joomlaによって生成されたすべてのページは、セッションテーブルに書き込む必要があります。

したがって、セッション管理にはmemcacheまたはapcを使用することをお勧めします。これは、データベースへのゼロ書き込みを実現するのに役立つはずです。したがって、ほとんどのページでは、読み取りレプリカで十分です。

1
Shyam

別の速度向上オプションは、リバースプロキシとしてNginxをその前に置くことです。共通ページがjoomlaに移動せず、mysql Cantがプロキシ構成を見つけるため、これによりデータベースアクセスの多くが削減されますが、これらは基本セットアップです

http://docs.joomla.org/Nginx

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

https://stackoverflow.com/questions/23960359/how-to-get-nginx-proxy-caching-to-work-with-dynamic-content

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

0
tristanbailey