0

私の質問のタイトルはかなり曖昧だと知っているので、できるだけ明確にするように努めます。コミュニティにとってより役立つように、この質問を自由にモデレートしてください。

多かれ少なかれデフォルト設定(少しの調整が許可され、クライアント側とサーバー側のキャッシュがオンになっている)で、最新のハードウェア(16Gb RAM、8コアCPU、無制限のディスク容量など)で実行されている標準のLAMPスタックが与えられます、適度に複雑なCMSサービス(議論のためにDrupalまたはWordpressプロジェクト)を展開する-パフォーマンスについて考え始める前に、どのくらいの量のトラフィック、SQLクエリ、ユーザー要求に対応できると合理的に期待できますか?

注:詳細はプロジェクトの詳細に大きく依存することを知っています。つまり、MySQLクエリの最適化、インデックス作成、ファイルシステムヒットの最小化-Web開発者が専門的な仕事をしたと仮定して-訪問に関して非常に大まかな数字を探しています1日あたり、訪問のピーク時のトラフィック、(トランザクションの)MySQLが失敗する前のレコード数など。

私の質問に実際に答える唯一の方法は、実際のプロジェクトで負荷テストを実行することです。私の質問が部分的にオフトップとして扱われる可能性があるのではないかと心配しています。

「こういうセットアップを実行して、少なくともこれだけの負荷を処理した[こういうことで問題が表面化し始めた]」など、直接の経験者から一連の数字を入手したいと思います。私はまた、問題をよりよく理解するために私ができる自信のある(時間のatmが不足している)読書に非常に興味があります。

PS明日、クライアントと会って彼のプロジェクトについて話します。彼のプロジェクトがFourSquareに似ていることが判明した場合は、パフォーマンスについて推論する準備をしたいと思います。

4

2 に答える 2

2

あなたが指摘したように、詳細なしで答えるのは非常に難しい。私があなたがしなければならないことを任された場合、私は各コ​​ンポーネント(ネットワークインターフェイス、CPU /メモリ、物理IO負荷、SMPロックなど)を順番に取得し、利用可能な最大容量を取得し、リクエストごとの使用量の概算で割ります。

たとえば、ネットワークio。あなたは1x1Gbカードを持っているかもしれません、それは多分100Mbytes/秒を達成するかもしれません。(私は理論上の最大値の80%を使用する傾向があります)。典型的な「ヒット」はどのくらいの大きさになりますか?HTML、画像などの場合、おそらく平均3kバイトです。つまり、物理レベルでボトルネックになる前に、1秒あたり33kのリクエストを達成できます。これらの数値は絶対的な最大値であり、ツールやスキルによっては近くに到達できない場合がありますが、これらの最大値を超えることはできません。

すべてのコンポーネントについて上記を繰り返し、おそらく数を少し変えてください。そうすれば、懸念される可能性のあるものの概要を簡単に把握できます。次に、各コンポーネントの容量をすばやく増やす方法を検討します。$$をチャックして、パフォーマンスを向上させることができますか(たとえば、HDの代わりにSSDドライブを使用します)。それとも、再設計せずに移動できない限界に達しますか?また、利用可能なリソースを考慮に入れてください。熟練したプログラマーの時間、DBA、または多額の現金がありますか?リソースがたくさんある場合は、経験曲線に沿って移動するときに、これらの制約をより簡単かつ迅速に減らす傾向があります。

外部コンポーネントも忘れないでください。ファイアウォールには、持続的なトラフィックに対して予想されるよりも低い制限がある場合があります。

申し訳ありませんが、実際の数値をお伝えすることはできません。ワークロードはカスタムサーバー、高メモリキャッシュ、その他のトリックを使用しており、リストされているすべての製品を使用しているわけではありません。ただし、IO / SQLクエリと、場合によってはネットワークIOに最も集中します。これらは、CPU /メモリよりも厳しい制限になる傾向があるためです。ただし、他の人は別の意見を持っていると思います。

于 2013-02-26T09:30:00.613 に答える
0

明らかに、質問は「適切な」答えがないようなものですが、私はそれを閉じて、いくつかのフィードバックを提供したいと思います。クライアントミーティングが行われ、パフォーマンスは確かに大きなものでした。彼らのホスティングプラットフォームはAmazonクラウド上にあることが判明しました:)

私が独自に行った調査から:

  • Memcacheは必須です。
  • 通常、MySQL(または実行している永続ストレージインスタンス)が最初に使用されます。ソリューションには、複数の仮想インスタンスを実行し、それらの間でデータを複製し、負荷を分散することが含まれます。
  • http://highscalability.com/は良い読み物です:)
于 2013-02-28T17:04:08.397 に答える