3

Amazon RDS インスタンスを使用して、6 つの WordPress ウェブサイトすべての MySQL データベースをホストしています。最大のサイトのトラフィックがピークに達した瞬間、RDS インスタンスの CPU 使用率は 1 時間以上 100% になりました。

データベース サーバーの負荷を読み取りアクティビティごとに分割することを考えています。私の Web サイトへのトラフィックのほとんどは、ログインしていないユーザーによるものです。したがって、これらのログに記録されていないユーザーをリードレプリカ RDS インスタンスに接続したいと思います。残りはソース RDS インスタンス、現在使用しているデータベース接続です。

どうすればそれを達成できますか?

4

2 に答える 2

10

WordPress のスケーリング Web サイトのトラフィックが増加すると、サーバーの負荷も増加します。速度に追いつくには、2 つの可能性がscale upあります。 - ボックスのサイズを大きくする - これは特に AWS では - 両方向のスケーリングのダウンタイムなどの他の欠点に加えて、明らかに制限があります。

scale out: トラフィックを分割し、複数のマシンに作業を任せます。トラフィックがしきい値を超えて増加したときにマシンを追加し、トラフィックのレベルが低くなったときにパワーを削除するだけです.

通常のセットアップでのスケーリングは、Web サーバーまたはデータベース サーバーのいずれかで行うことができます。AWS は両方をサポートします。データベースは一般的なボトルネックであり、この質問は実際にこれに対処することを望んでいるため、ここでデータベースのスケーリングについて説明します。

Amazon RDS (マネージド MySQL SaaS) は、データベースのリードレプリカを作成するためのワンクリック ソリューションを提供します。データベースの世界では、リード レプリカはレプリケーション スレーブと呼ばれます。マスター サーバーで実行されたすべての変更クエリは、スレーブ マシンで自動的に再生されます。

ユーザーにサービスを提供するために必要な数のリードレプリカを作成できます。ここからが複雑な部分です。READレプリカについて話しています。つまり、すべてのインスタンスでランダムにクエリのバランスを取ることはできません。マスター サーバーのみがクエリの書き込みを行います。

追加のマシンが必要な MySQL プロキシのようなデータベース プロキシを使用すると、クエリ タイプを分割し、負荷を均等に分散できます。アプリケーションはこのプロキシと通信するため、それ自体を変更する必要はありません。

Wordpress はマスター/スレーブ セットアップ用に設計されておらず、これはネイティブでサポートされていませんが、トラフィックの多いブログがたくさんあることは誰もが知っています。

幸いなことに、HyperDB というソリューションがあります。

http://wordpress.org/extend/plugins/hyperdb/

これは、Wordpress プラグインです。

  • サーバーの読み取りと書き込み (レプリケーション)
  • 読み取りと書き込みの設定可能な優先順位
  • ローカルおよびリモートのデータセンター
  • プライベート ネットワークとパブリック ネットワーク
  • 異なるデータベース/ホスト上の異なるテーブル
  • スマート ポストライト マスター読み取り
  • ダウンしたホストのフェイルオーバー
  • プロファイリングの高度な統計

このプラグインは、Wordpress のデフォルトのデータベース抽象化レイヤーを置き換えます。これは、Wordpress チームによって開発され、積極的に使用されています。

ダウンロードして、インストール手順に注意深く従ってください。

楽しむ!

于 2012-12-14T08:50:01.027 に答える
0

まず、こちらの Amazon FAQの説明に従って、RDS リードレプリカをセットアップします。次に、このマシンのクライアント エンドポイントを取得します (FAQ の次の質問を参照してください)。

すぐに使用できる機能が新しいバージョンの Wordpress でサポートされているかどうかはわかりませんが、現在のユーザーが Wordpress にログインしているかどうかを確認する方法があります。Wordpressには、ユーザーがログインしているかどうかを確認する方法があります。データベース接続を確立する前にこの関数を早期に呼び出すと、ログインしているユーザーに遭遇した場合にデータベース接続を変更できます。

于 2012-12-14T08:15:29.860 に答える