Webサーバーの1秒あたりの要求の現実的な測定値を決定する


15

私はnginxスタックをセットアップし、稼働する前に構成を最適化しています。abを実行してマシンのストレステストを行いましたが、1秒あたり150件のリクエストが発生し、かなりの数のリクエストが返されるまでに1秒以上かかることに失望しました。奇妙なことに、機械自体も激しく呼吸していませんでした。

私はついにボックスにpingを実行することを考え、ping時間は約100〜125ミリ秒を見ました。(驚いたことに、このマシンは全国にあります)。したがって、ネットワークの遅延が私のテストを支配しているようです。サーバーと同じネットワーク上のマシンから同じテストを実行すると(ping時間<1ミリ秒)、1秒あたり5000を超えるリクエストが表示されます。これは、マシンに期待するものと一致しています。

しかし、これは私に考えさせられました:Webサーバーに対する1秒あたりの要求の「現実的な」測定値をどのように決定し、報告するのですか?パフォーマンスに関するクレームは常に表示されますが、ネットワーク遅延を考慮する必要はありませんか?確かに、サーバーの隣のマシンには毎秒5000リクエストを提供できますが、全国のマシンには提供できません。低速な接続がたくさんある場合、最終的にサーバーのパフォーマンスに影響を与えますよね?それとも私はこれについてすべて間違っていると考えていますか?

これがネットワークエンジニアリング101の場合はご容赦ください。私は貿易によって開発者です。

更新:明確にするために編集されました。


ab並行性オプションがあります。何に設定しましたか?また、国内のADSL接続からテストしている場合、テストは帯域幅に支配される可能性が高く、サーバー上の何もテストしません。
ラダダダダ

私はabの同時実行オプションに精通しており、ボックスの限界を発見するために幅広い値を試しました。上記で書いたように、私の最初のテストはネットワークに支配されており、サーバーの機能を反映していないことを理解しています。しかし、私の質問はまだ残っています。現実的な測定基準を得るために、ほとんどの人はどこからテストを実行しますか サーバーと同じネットワーク上のボックスからテストを実行すると(実質的にネットワーク遅延が計算から除外されます)、大きな数値が返されますが、実際のユーザーはネットワークの外部から来ているため、「公正な」数値とは思えません。
ドン

同じネットワークから実行されるテストは、ネットワークを本質的に無視するため、実際にはより「公正」である可能性があります。ユーザーはすべて異なるネットワーク上にいる可能性が高いため、これらすべてのネットワークの合計帯域幅は、サーバーの使用可能な帯域幅を簡単に超えるはずです。したがって、すべてのユーザーをまとめて考えると、ボトルネックはサーバーの機能になります。一方、個々のユーザーを考えると、ボトルネックはその単一ユーザーの帯域幅になります。(理想的なテストは、実際の状況を最適にシミュレートするために、おそらく複数の遠隔地から実行されるでしょうが、ほとんどの場合、それを必要とするべきではありません)。
cyberx86

「したがって、すべてのユーザーを一緒に考えると、ボトルネックはサーバーの機能です」-それは理にかなっており、それについて考える正しい方法のようです。サーバーは、安っぽいネットワーク機器の後ろに座って、応答速度を外の世界に制限していると思いますが、それは実際にはサーバーの問題ではなく、個別に対処する必要があります。Pingdomのようなものを使用して理想的なテストを実行できると思います。
ドン

回答:


3

世界中のどこからでもアクセスしたときにサーバーのパフォーマンスが気になる場合は、世界中のどこかにいる友人(良い帯域幅が必要)にsproxy + siegeをLinuxボックスにインストールするように依頼してください。ダウンロード、構成、作成するだけです。これらのツールは小さく、数秒でコンパイルされます。

まずsproxy、Linuxボックスを起動します。デフォルトでは、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秒あたりのトランザクション数、エラー率、平均リクエストにかかった時間などを表示します。これは強力で使いやすいツールです。
あなたはパラメータの詳細を(多くがある)必要がある場合は、チェック包囲を手動 AN SPROXYマニュアル

より現実的な結果を得るには、さまざまな国のサーバーを一度に多くの人がテストし、統計を送信できるようにします。


2

現実的な要求/秒の測定値はアクセスログから取得する必要があります。IMOでは、サーバーはすべての要求をその発生元に関係なく同じ速度で処理するため、要求の待ち時間はサーバーの負荷とは関係ありません。


1

Soasta Cloudtestなどのサービスの使用を検討してください。これにより、テストに関する非常に詳細なレポートを取得でき、さまざまなパブリッククラウド/仮想化プロバイダーからパフォーマンステストを実行できます。サーバーをハンマーで叩く強さおよび強さを設定できます。また、無料の「ライト」バージョンがあるため、お金をかける前に何ができるかを確認できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.