web-dev-qa-db-ja.com

起動時に必要なサーバーリソースの種類を推定する方法

新しいプロジェクトの立ち上げ時にどのような種類のサーバーリソースが必要かを見積もるには、どうすればよいですか/何が最善の方法ですか。たとえば、起動時に通知されるように選択した1万人のユーザーのメールアドレスを収集したとします。

現時点では、クラウドソリューションに行きたくありませんでした。合理的に指定された専用サーバーを取得してそこから移動するだけですか、それともAmazon EC2のようなサービスを見るべきですか?または、完全に柔軟なリソースのEC2から始めて、物事が安定したら、他の場所で十分な固定ホスティング契約を並べ替えることができますか?

サブ質問:特定のアプリケーションがユーザーごとにサーバーに与える負荷を推定する良い方法は何ですか?

3
Anonymous

一般的に、私の経験では、誰もがウェブサイトが消費するリソースの量を過大評価する傾向があります。

相変わらず、それはお金/容量の見返りです。 Word goから毎月30/40GBの帯域幅の使用を期待しているのでなければ、標準の共有ホスティングパッケージで始めることをお勧めします。

最近のサイトをホストする際の主な問題は、実際にはそれほど持続的な使用ではなく、ソーシャルメディアとメールアウトによって引き起こされるピークです。 10,000人の電子メール受信者のすべてがあなたの電子メールをクリックすることを保証できれば、専用サーバーを入手できます。

EC2はより柔軟ですが、専用ソリューションよりもコストがかかります。負荷が必要に応じてインスタンスを自動的にスプールアップおよびダウンするために使用できる場合にのみ、実際に独自の価格になります。 EC2は瞬時の負荷スパイクをまったくうまく処理しないと言います。 150,000人以上のフォロワーを持つツィーターがサイトへのリンク(@notch)をツイートすることを期待している場合は、キャッシュを使用してクラスターでホストするか、または「包囲」を使用してEC2をヒットする必要がありますトラフィック、従ってそれはスプールアップします。

技術的に言えば、専用システムはEC2よりも保守と操作がはるかに簡単です。すべてを完全に制御できます。 EC2の大部分はAmazonに任されており、それらのインスタンスは、あなたが決して底につかないようなstrangeことを行うことができます。 ec2インスタンスを完全に簡単かつ迅速に破棄できるように構成する準備をしてください。失敗したインスタンスを検出して再起動する自動システムを使用するのが最善です。ロードバランサーを使用している間、(ほとんど)すべてが機能することがわかります。

さらに、必要なリソースは、Webページを訪問者に送信するためにWebサーバーが行う必要のある作業量によっても異なります。静的なhtmlサイトですか?私は非常に大きいを見たことがあります単一のコアP4、1GB RAM、Apache2-mpm-preforkマシンによって簡単に対処されたテレビ番組駆動のトラフィックスパイク、単に動的なコンテンツがまったくなかったからです。 Preforkは、動的コンテンツがないことを知らされなかったため、PHPは有効化されていましたが、使用されていませんでした。

siege/ab(Apacheベンチマーク)はどちらも素晴らしいツールであり、サイトで対処できることをテストするために使用する必要があります。 50を超える同時実行は、@ notch'edなどの場合を除き、非常にまれです。Siegeはより高度なツールであり、より完全にWeb訪問者のふりをすることができます。任意の形式のロードバランサーを使用し、URLのリストを使用して実行する場合は、複数のインターネット接続から同時に実行するのが最適です。

必ずキャッシュソリューションを使用してください。ワードプレスを使用している場合は、キャッシュプラグインを使用してください。 PHPのオペコードキャッシュを設定するのと同じくらい深い技術を習得する準備をしてください。助けを求めることを恐れないでください、そしてあなたはいつでも(少し生意気である)専門家を呼ぶことができます:)

免責事項/ソース:私は http://positive-internet.com で働いている専門家です

4
Kirrus

専用サーバーを取得してリソース制限に達すると、クラウドベースのサーバーをセットアップしてそのデータをすべて移行する必要があります。少なくともec2を使用すると、ロードバランサーをセットアップした別のサーバーを起動し、ダウンタイムを最小限に抑えることができます。

アプリケーションの1人のユーザーが使用するリソースの数を見積もるため。これらのLinuxアプリケーションを使用します

メモリを監視するための帯域幅の使用量と使用量を監視するための端末スクリプトbmon

単一のユーザーアカウントにログインした状態でこれらのスクリプトを実行し、新しいユーザーが行うように編集データを追加し、ユーザーが1日で行うプログラムやアプリケーションを実行します。 bmonおよびvmstatのログを確認すると、使用量を見積もるためにスケールアップできます。このデータをAmazon計算機にプラグインして、使用量を確認することもできます。

アプリケーションがcronを使用して、毎日実行するタスクを実行している場合。 ec2 APIを使用してサーバー(インスタンス)をオンラインにし、タスクを実行してからオフラインにすることを検討する必要があります。そうすることで、管理タスクを数分または数時間実行するだけで24時間年中無休になります。それはあなたにいくらかのお金を節約します。

1
Anagio