17

私たちは、(一度だけ)初日にかなりの量のトラフィックを得ることが期待されるクライアントのためのウェブサイトに取り組んでいます。プレスリリースやブログなどがあります。初日は横ばいになるのではないかと少し心配です。大規模なローンチ後も立ったままでいることができるようにするために(実際のトラフィックデータなしで事前に)確認する主なことは何ですか?

詳細:これは、内部で開発されたMVCフレームワークを使用したL / A / M/PHPスタックです。これは現在、ApacheとMySQLの両方を搭載した1つのサーバーで起動されていますが、必要に応じて分割できます。

すでにMemcachedをインストールしており、考えられる限り多くのPHPレベルのキャッシュを実行しています。一部のページはかなりクエリ集約的であり、テンプレートエンジンとしてSmartyを使用しています。これらの主要な側面を変更する時間はないことを覚えておいてください。これは単なる設定です。どんなことに気をつけるべきですか?

4

7 に答える 7

10

最初に測定し、次に最適化します。負荷テストを行ったことはありますか? ボトルネックはどこにありますか?

ボトルネックがわかれば、追加のデータベース ボックスまたは Web ボックスが必要かどうかをインテリジェントに判断できます。今、あなたは推測しているだけです。

また、負荷テストの結果は、予想されるトラフィックとどのように比較されますか? 予想されるトラフィックの 2 倍を処理できますか? 五回?追加のハードウェアをどのくらい簡単に入手してリリースできますか? ビジネス要件は、起動中に失敗しないことだと確信しているため、利用可能容量が十分にあることを確認してください。負荷が安定し、何が必要かがわかったら、いつでも解放できます。

于 2008-09-22T22:26:30.800 に答える
3

少なくともすべての静的コンテンツを除外します。別の場所に別の vhost をセットアップし、すべてのグラフィックス、CSS、および JavaScript をそこにロードします。追加のサイクルを購入して、そのタイプのコンテンツの提供をオフロードできます。どうしても気になる方は、コンテンツ配信サービスに登録してご利用ください。現在、Akamaiに類似した非常に安価な製品が多数あります。

もう 1 つのアイデアは、Apache mod_proxyを利用して、生成されたページ出力を特定の時間維持することです。APCも非常に便利です...出力バッファリングキャプチャ+ページ上の関連データの最終変更時刻を採用し、APCキャッシュバージョンを使用できます。ページが有効でなくなった場合は、再生成して APC に再度保存します。

幸運を。勉強になります!

于 2008-09-22T22:30:20.607 に答える
2

処理できる限り多くのユーザーを受け入れ、サイトのパフォーマンスを測定し、ライブに移行する前にバグを解決するベータ期間を設けます。

プライベート ベータで明示的にユーザー数を制御するか、各ユーザーが友人に提供できる紹介数を持っている Google スタイルのセミパブリック ベータのいずれかを使用できます。

于 2008-09-22T23:54:50.963 に答える
1

スパイク (またはピーク) パフォーマンスを準備または処理するには、まずjmeterなどを使用した簡単なパフォーマンス テストを通じて、準備ができているかどうかを判断します。

設定して開始するのは簡単で、予想されるピーク負荷を処理できるかどうかを早期に判断できます。

ただし、時間の制約がある場合は、最も注目を集めるコンテンツの静的バージョンを準備する必要があります (リリース日の場合はプレス リリースなど)。また、クライアント側のキャッシュを最大限に活用していることを確認してください (サーバーへの要求を 1 つ減らすだけで、すべてが変わります)。Web はすでに非常に高いスケーラビリティを実現するように設計されており、コンテンツ キャッシングを効果的に使用することは、このような状況での最良の友です。

物事が落ち着いたら、新しいガーディアン Web サイトの設計に関するソフトウェア エンジニアリング ラジオの高いスケーラビリティに関する優れたポッドキャストがあります。

打ち上げ頑張ってください。

于 2008-09-22T22:25:34.267 に答える
1

私は、個人的に、いくつかのことをしたいと思います

1) ある種のロード バランサ/データベース レプリケーション システムを導入する

つまり、サービスを複数のサーバーに分散させることができます。複数のサーバーを永続的に持つ余裕はありませんか? Amazon E3 を使用する - このようなものを配置するのに適しています (負荷を処理するためにさらにいくつかのサーバーのスイッチを入れます)

2) いくつかの「高負荷」制限でのコード

たとえば、検索が非効率な場合は、負荷が一定のレベルに達したらオフにします。「すみません、忙しいので、後でもう一度検索してみてください」

3) ロード テスト... ApacheBenchなどを使用して、サーバーのストレス テストを行います。

4) 個人的には、「キープアライブ」接続をオフにする方が良いと思います。全体的なパフォーマンスがわずかに低下する可能性がありますが、サイトが一部の人にはうまく機能し、他の人にはタイムアウトが発生する代わりに、そのレベルに達すると、誰もが一貫性のないサービスを受けることを意味します

Linux Format は、「スラッシュドットを生き残る方法」に関する優れた記事を作成しました...これは過去に役に立ちました。PDFとしてオンラインで入手できます

于 2008-09-22T22:28:08.957 に答える
1

高トラフィック向けにサイトを強化するための基本的な最初のステップ。

  1. https://browsermob.com/のような低コストのツールを使用して、サイトの負荷テストを行います。少なくとも、1 時間あたり 100,000 のユニーク ビジターを確認する必要があります。MSN のホームページから広告が表示される場合は、1 時間あたり 50 万人のユニーク ビジターを処理できることを確認してください。

  2. すべての静的なグラフィック/ビデオ コンテンツをCDNに移動します。Edgecast と Amazon は 2 つの優れた選択肢です。

  3. Jet Profilerを使用して MySQL サーバーのプロファイルを作成し、実行速度の遅いクエリを分析します。マイナーな変更は、大きなメリットをもたらす可能性があります。

于 2010-06-02T19:52:16.080 に答える
0

Varnishの使用を検討してください- これはキャッシング リバース プロキシ サーバーです ( Squidに似ていますが、より多くの単一目的)。

私はその背後でいくつかのかなり大きなサイトを運営してきましたが、非常にうまく機能しているように見えました.

于 2008-09-23T00:31:17.833 に答える