私はnginxスタックをセットアップし、ライブになる前に構成を最適化しています。マシンをストレステストするためにabを実行していると、1秒あたり150の要求でトップに達し、かなりの数の要求が1秒を超えるまで戻って来るのに失望しました。奇妙なことに、機械自体は呼吸さえしていませんでした。
私はようやくボックスにpingを実行することを考え、pingの時間は約100〜125ミリ秒であることを確認しました。 (驚いたことに、このマシンは全国にあります)。したがって、ネットワーク遅延が私のテストを支配しているようです。サーバーと同じネットワーク上のマシンから同じテストを実行すると(ping時間は1ミリ秒未満)、毎秒5000を超えるリクエストが表示されます。これは、マシンから期待したものと一致しています。
しかし、これは私に考えさせました:Webサーバーの1秒あたりの要求の「現実的な」測定値をどのように決定して報告するのですか?常にパフォーマンスに関する主張が表示されますが、ネットワーク遅延は考慮に入れるべきではありません?確かに、サーバーの横にあるマシンに毎秒5000リクエストを提供できますが、全国のマシンには提供できません。遅い接続がたくさんある場合、それらは最終的にサーバーのパフォーマンスに影響しますよね?それとも私はこれについてすべて間違っていると思いますか?
これがネットワークエンジニアリング101かどうかを許してください。私は貿易によって開発者です。
pdate:明確にするために編集。
世界のどこかからアクセスしたときのサーバーのパフォーマンスを気にする場合は、世界のどこか(良い帯域幅が必要です)の友人に、Linuxボックスに sproxy + siege をインストールするよう依頼してください。ダウンロード、構成、作成を行うだけです。これらのツールは小さく、数秒でコンパイルされます。
まず、Linuxボックスでsproxy
を起動します。デフォルトでは、localhost(127.0.0.1)のポート9001で実行されます。外部からアクセスする場合は、送信IPアドレスをパラメーターとして渡します。
次に、このIPとポートをHTTPのプロキシとして使用するようにブラウザを設定して、sproxyに接続します。これから行うことはすべてsproxyによって記録され、後で再生することができます。次に、サイトをサーフィンし、顧客が行うことを行い、サーバーを使用する「高価な」ことを試みます。
完了したら、CTRL ^ Cを押してsproxyを終了します。アクションを$HOME/urls.txt
に記録しました。包囲が存在する場所にファイルを移動します。ストレステストを開始するには、siege -f urls.txt -d NUM -c NUM
を実行します。 d
は、リクエスト間の遅延を表します。パフォーマンステストを実行する場合は、1(秒)を使用します。 c
は、シミュレートされた同時ユーザーの数を表します。思いのままに選択してください。 Siegeは、1秒あたりのトランザクション数、エラー率、平均リクエストにかかった時間などを表示します。これは強力で使いやすいツールです。
パラメータに関する詳細が必要な場合(多数あります)、 siege manual と sproxy manual を確認してください
より現実的な結果を得るには、多くの国で一度にさまざまな国のサーバーをテストし、統計情報を送信してもらいます。
現実的な要求/秒の測定値は、アクセスログから取得する必要があります。 IMO、サーバーはOriginに関係なくすべての要求を同じ速度で処理するため、要求の待ち時間はサーバーの負荷とは関係ありません。
Soasta Cloudtest などのサービスの使用を検討してください。これを使用すると、テストに関するかなり詳細なレポートを取得したり、さまざまなパブリッククラウド/仮想化プロバイダーからパフォーマンステストを実行したりできます。あなたはあなたのサーバーをハンマーで打つことをどれだけ難しく、どれだけの期間行うかを設定することができます。また、無料の " lite "バージョンもあるので、お金を投入する前に何ができるかを確認できます。