申し訳ありませんが、ここでは「場合による」が最良の答えです。
まず、この質問に答える上で最も価値のあるツールは、ab でも siege でも JMeter (私のお気に入りのオープン ソース ツール) でもなく、スプレッドシートです。
システムが処理できるリクエストの数は、最初にぶつかったボトルネックによって決まります。これらのボトルネックの一部はハードウェア/インフラストラクチャ (帯域幅、CPU、負荷分散スキームの有効性) であり、一部は「既製の」ソフトウェアとその構成方法 (たとえば、静的ファイルを提供する Apache の機能) です。ソフトウェア (PHP スクリプトとデータベース クエリの実行効率)。一部のボトルネック リソースは制御できない場合があります。たとえば、ヨーロッパまたは米国でホストされているほとんどのサイトは、中国からアクセスすると速度が低下します。
スプレッドシートを使用してユーザー ジャーニーをモデル化しました。これは、特定のケースに完全に依存しますが、ユーザー ジャーニーは次のようになります。
- ホームページをご覧ください
- 「登録/ログイン」リンクをクリック
- 新規ユーザー登録
- メールの「確認」リンクをクリック
- 制限されたコンテンツへのアクセス
ほとんどのサイトは、多くのユーザー ジャーニーをサポートしています。いつでも、これらのユーザー ジャーニーの組み合わせは大きく異なる可能性があります。
ユーザージャーニーごとに、訪問者の要求の性質を評価します。たとえば、「ホームページにアクセス」は「20 個の静的ファイルと 1 つの PHP スクリプトをダウンロードする」であり、「新規ユーザーとして登録する」には「1 つの PHP スクリプト」が必要な場合があります。 、ただしかなり複雑なデータベース スクリプトのセットを使用します。
このプロセスは、タイプごとのリクエスト数を示すスプレッドシートの一連の行として終了します。精度を上げるために、各動的ページ (PHP スクリプト) を独自の要求として扱う必要があるかもしれませんが、通常はすべての静的アセットをひとまとめにします。
これにより、一連の仮定に基づいてテストするためのベースラインが得られます。「20% の新規ユーザー、50% のリピーター ユーザー、10% のホームページのみ、20% の完全な購入経路、20% の放棄バスケット」または思いついたユーザー ジャーニーを表す負荷テスト スクリプトを作成できるようになりました。
ジャーニーを含む負荷テスト スクリプトを作成して実行します。理想的には、複数の場所から (クラウド プロバイダーから Jmeter を実行する安価な方法がいくつかあります)。応答時間を測定し、10% 以上のケースで、最も遅い要求の応答時間が品質しきい値 (通常は 3 秒をお勧めします) を超えている場所を確認します。
ユーザー ジャーニー間の分割を変えてみてください。たとえば、広告キャンペーンによって多くの新規登録が促進される場合があります。通常、少なくとも 3 つまたは 4 つの異なる混合物をお勧めします。
ユーザー ジャーニーのバリエーションのいずれかが平均を大幅に下回る結果 (15% 以上) をもたらす場合、それはおそらく最悪のシナリオです。
それ以外の場合は、結果を平均すると、これがサポートできるリクエストの最小数であることが、ある程度の確実性でわかります。テストできるユーザー ジャーニーのバリエーションが多いほど、数値が正確であることが確実になります。「最小」とは、少なくともこの数のユーザーを管理できると合理的に確信できることを意味します。これだけ多くのユーザーを処理できるという意味ではありません。微妙な違いですが、重要な違いです。
ほとんどの Web アプリケーションでは、ボトルネックは動的なページ生成です。静的ファイルを提供する Apache の機能やホスティング プロバイダーの帯域幅をテストする意味はほとんどありません。これは「何か忘れていないか」テストとしては良いのですが、PHP スクリプトをテストすることで、はるかに多くの価値を得ることができます。
これを行う前に、PHP ファイルだけで「ボトルネックを探す」ことをお勧めします。上記で概説したプロセスでは、ボトルネックがどこにあるかはわかりません。ボトルネックが 1 つあるだけです。PHP である可能性が最も高いため (もちろん、データベースの呼び出しなど、PHP から実行するすべてのことも)、パフォーマンスをテストするためにソリューションをインストルメント化することは、通常は良い考えです。
また、Yslow などのツールを使用して、HTTP/HTML の設定が最適化されていることを確認する必要があります。静的アセットのキャッシュ ヘッダーを設定すると、帯域幅の請求に大きな影響があり、エンド ユーザーが認識するパフォーマンスが向上する可能性があります。\