1

スタックオーバーフローのウェブサイトを開発したいとします。1日あたり100万件のリクエストを想定して、このWebサイトをサポートするために必要なコモディティハードウェアの量を見積もるにはどうすればよいですか。この状況で可能なパフォーマンスの向上を説明するケーススタディはありますか?

I / Oのボトルネックは、ほとんどのシステムの主要なボトルネックであることを私は知っています。I / Oパフォーマンスを改善するための可能なオプションは何ですか?私が知っているそれらのいくつかは

  1. キャッシング
  2. レプリケーション
4

3 に答える 3

2

ストレージ設定に使用するものに応じて、いくつかの方法でI/Oパフォーマンスを向上させることができます。

  1. アプリがI/Oに適切な空間的局所性を示している場合、または大きなファイルを使用している場合は、ファイルシステムのブロックサイズを増やしてください。
  2. パフォーマンス+冗長性(ディスク障害保護)のためにRAID 10 (ストライピング+ミラーリング)を使用します。
  3. 高速ディスクを使用します(パフォーマンスワイズ:SSD> FC> SATA)。
  4. 1日のさまざまな時間にワークロードを分離します。例:夜間のバックアップ、日中の通常のアプリI/O。
  5. ファイルシステムの時間更新をオフにします。
  6. NFSサーバーにデータを保存する場合、キャッシュNFSファイルは別名Haystack (Facebook)を処理します。
  7. 小さなファイルを大きなチャンク(別名BigTableHBase )に結合します。
  8. 非常に大きなディレクトリ、つまり同じディレクトリ内の多数のファイルは避けてください(代わりに、階層内の異なるディレクトリ間でファイルを分割してください)。
  9. クラスタ化された ストレージシステムを使用します(正確にはコモディティハードウェアではありません)。
  10. 可能な限り、順次ディスクアクセス用にアプリケーションを最適化/設計します。
  11. memcachedを使用します。:)

StackOverflowアーキテクチャの「教訓」セクションをご覧ください。

于 2010-01-14T20:29:50.680 に答える
1

この便利なツールをチェックしてください:

http://www.sizinglounge.com/

デルからの別のガイド:

http://www.dell.com/content/topics/global.aspx/power/en/ps3q01_graham?c=us&l=en&cs=555

独自のstackoverflowのようなコミュニティが必要な場合は、StackExchangeにサインアップできます。

ここでいくつかのケーススタディを読むことができます:

高いスケーラビリティ-RackspaceがMapReduceとHadoopを使用してテラバイトのデータをクエリする方法 http://highscalability.com/how-rackspace-now-uses-mapreduce-and-hadoop-query-terabytes-data

http://www.gear6.com/gear6-downloads?fid=56&dlt=case-study&ls=Veoh-Case-Study

于 2010-01-14T20:19:19.853 に答える
1

1日あたり100万リクエストは12/秒です。スタックオーバーフローは十分に小さいので、(興味深い正規化と圧縮のトリックを使用して)64GバイトのDellPowerEdge2970のRAMに完全に収めることができます。キャッシュとレプリケーションがどこで役割を果たすべきかわかりません。

正規化について十分に考えるのに問題がある場合は、256GBのPowerEdgeR900を利用できます。

単一障害点が気に入らない場合は、それらのいくつかを接続して、ソケット(できれば別のネットワークカード)を介して更新をプッシュすることができます。12K /秒のピーク負荷でさえ、メインメモリシステムにとって問題にはならないはずです。

I / Oのボトルネックを回避する最善の方法は、I / Oを(可能な限り)実行しないことです。つまり、バッチ書き込み(数秒のデータを失うことは問題ありません)、基本的にはログファイルを備え、レプリケーション用にそれらをソケットに書き出す、普及しているようなアーキテクチャを意味します。

于 2010-01-14T20:46:04.717 に答える