web-dev-qa-db-ja.com

別のデータベースサーバーを追加する適切なタイミングはいつですか?Webサーバーを追加しますか?

通常、Webプロジェクトは小規模で始まり、すべてが1つのサーバー上にあります。しかし、サイトが人気になると、1台のサーバーでは不十分になります。
それで、私はこれについての経験がないので、私は以下の考えを得たいと思います:
1。 MySQL DBを別のサーバーに移動する必要があることを意味する負荷と、この負荷を測定する方法は何ですか?
2。別のWebサーバーを追加する必要があるということと、それを測定する方法はどのような負荷ですか?
3。およそ、1台のサーバーで何人のユーザーにサービスを提供できますか?

私はこのようなLAMPサーバー上の単純なPHPアプリについて話している:
* CPU:Athlon 3800+
* CPUの詳細:2 x 2.0 GHz
* RAM:1 GB RAM
*ハードディスク:2 x 160 GB(RAID 1ソフトウェア)

5
z-boss

それはすべて...データセットのサイズ、使用パターンによって異なります。

エンドユーザーエクスペリエンスを測定します。許容可能なページ読み込み時間を設定し、5〜10分ごとにテストして、グラフをプロットします。それはすべてあなたのビジネスが何を許容できるか、そしてそれがいつ受け入れられなくなるかによります。

mysqlでslow_queryを有効にします。おそらく、10秒以上かかる1日あたり5〜10を超えるクエリは必要ありません。または多分あなたはいくつかの毎晩の報告を持っていて、あなたはそれらを許容することができますか?

おそらくあなたはいくつかの統計を生成したいと思うでしょう-例えば munin cpuの使用量、iostats、システム負荷、ネットワークトラフィック、httpプロセスの数、mysqlスレッドの数、ページ生成時間でそれがどのように変化するかを見てください日/週。これでピーク時間を正確に特定でき、たとえばメモリの追加やmysqlの調整によってページの読み込み時間がどのように変化するかを確認できます。

あなたの場合、負荷平均> 2または3は、システムが過負荷になっていることを意味します[しかし、それは非常に議論の余地があります]

いくつかのヒントについては ここ を見てください。

3
pQd

より多くのサーバーとスケーラブルなアーキテクチャの計画を開始するときは、座って仕様を作成するときです(モジュラー機能を備えたコードベースが必要なので、簡単に分解できますが、少なくとも「Webフロント」が必要です。 -end」および「データベースバックエンド」は、ある程度のモジュール性です)。

それを配置し、1つのサーバー(データベースとフロントエンド)で実行すると、さまざまな操作にかかる時間とマシンの負荷を監視できます。負荷が「CPUの数」を超えて上昇し始めると、間違いなく「これを分割する必要があります」という土地になります。履歴データを保存している場合は、将来の状況を推定して、一度に容量を追加することを決定できます。容量は、必要に応じて大まかになります。

UNIXマシンでは、「負荷平均」は(おおよそ)実行キュー(つまり、実行の準備はできているがタイムスロットを待機しているプロセス)の平均の長さです。通常、物理的にはCPUの数によってスケーリングされません。ボックス)。これがCPUの数よりも継続的に多い場合、これはボックスが過負荷になっていることを示す少なくとも1つの指標です。それが唯一の手段ではありませんが、ハードで迅速なガイドとして、それはそれほど悪くはなく、システムがあなたのためにそれを計算します。

2
Vatine

負荷以外に注意すべきもう1つの点は、100%稼働時間の必要性です。サーバーの再起動中にサイトを稼働させたままにする必要がある場合は、いくつかの冗長性/クラスタリングが必要です。

Webサーバーを仮想マシンとして実行しているため、冗長性のために2つ(約200サイト)のみを使用し、必要に応じて「サーバーリソース」を増やすことができます。 3番目のWebサーバーを導入する必要なしに(ある程度まで)負荷を処理します。

パフォーマンスを向上させる必要がある場合は、最も簡単なのはMySQLを分離することです別のボックスに移動します。ただし、これはサイトが2倍ダウンする(つまり、いずれかのサーバーが再起動/失敗するとサイトがダウンする)ことも意味します。

2
Brent

キャパシティプランニングで、現在のインフラストラクチャがなくなる前に、新しいサーバーのリードタイムが約3倍になることがわかったときにアップグレードします。

0
womble

また、計画を検討するためにmod_proxyとmod_disk_cacheを調べる必要があります。アプリケーションが正しいヘッダー(Cache-Controlなど)を送信する別のパーティションに配置されます。これは、キャッシュされた(およびキャッシュ可能な)ページを静的であるかのように提供できるため、Apacheでのアプリケーションのパフォーマンスを向上させる非常に優れた簡単な方法です。

キャッシュ共有の理由でパフォーマンスが低下するため、mod_mem_cacheを使用しないでください。

私が実行している大規模ホスティングシステムでは、負荷が約20〜30%低下しました。 mod_disk_cacheパラメーターは、設定を間違えるとiostatsが劇的に増加する可能性があるため、注意してください。

0
hurikhan77