0

サーバー (Tomcat、Apache、Linux) と複数のモバイル クライアント (Android、iPhone、Windows、Nokia J2ME) を含むアプリケーションを作成しています。

通常、クライアントとサーバーは http を使用して通信します。

クライアントが作成した http リクエストから、クライアントのダウンロード速度とアップロード速度を知りたいです。

理想的には、ファイルをアップロードしてファイルをダウンロードして、これらの速度を実現したくありません。私はこれを私に与えることができる HTTP プロトコル レベル、またはネットワークのいくつかの下位層に何かがあるかもしれないと仮定しています。

4

4 に答える 4

2

そんなに単純だったら。

ネットワークの帯域幅と遅延が非常に明確に定義されている場合でも、実際のスループットは、輻輳ウィンドウと、スロー スタートのしきい値を確立するエンド ポイントの場所によって制限されます。これらは、スループットに 20 倍以上の影響を与える可能性があります。

これらのメトリックを提供するHTTPには何もありません。一部の TCP スタックは、スループットに関する限られた情報を公開します ( iftopiptrafで使用されるように)。

ただし、HTTP スループットに関する有用なメトリックを本当に収集したい場合は、ネットワーク全体にデータを送信する必要があります。実装については、yahoo ブーメランを参照してください。

于 2012-04-12T09:45:21.077 に答える
0

http 接続が最初に Apache サーバーに接続される場合、Apache Bench を使用してあらゆる種類の負荷テストを実行できます。これは apache に付属しており、次のような方法で呼び出すことができます。

Yahoo が 100 件のリクエストを処理できる速度を調べたいとします。最大 10 件のリクエストが同時に実行されます。

ab -n 100 -c 10 http://www.yahoo.com/
于 2012-04-12T09:29:40.410 に答える
0

HTTP は接続速度を扱いません。接続の速度を推定し、この情報を渡すようにカスタムヘッダーを設定するHTTP(リバース)プロキシを含むいくつかのソリューションを想像することはできましたが. また、さまざまな接続の統計を特定のクライアントに関連付ける必要があります。これに対するすぐに利用できる解決策はまだ見たことがありません。

また、

  1. ネットワークトラフィックはバッファリングまたはシェーピングできるため、ダウンロード速度は、転送されたデータの量またはネットワークの以前の負荷に依存する場合があります。そのため、ファイルをダウンロードしても正確ではありません。
  2. 転送されるデータの量はプロトコル レベルによって異なります (HTTP でラップされたペイロードが gzip でラップされ、TLS でラップされた TCP でラップされます)。どちらを測定しますか? または、この測定された速度で何を達成したいですか?
于 2012-04-12T09:55:21.397 に答える
0

これを受動的に実行できる Real User Monitoring (RUM) ツールをいくつか見てきました (これらのツールは、データ センターのサーバーの前にある SPAN ポートまたはネットワーク TAP からフィードを取得します)。

それらが生成するデータをアプリケーションに統合する方法はおそらくありますが、それが簡単であるかどうかはわかりませんし、モバイルネットワーク上で遅延と帯域幅が正確に「動的に」変化する可能性があることを考えると.

実際に注目すべきことは、アプリの設計、ネットワークを介して移動するデータの量、データを最小限に抑える方法などだと思います.

他に考慮すべきことは、一部のアプリケーションを電話会社の POP でホストできるようにするソリューションを提供できるかどうかです (一部の電話会社はすべてのタワーを中央の POP にルーティングし、他の会社は複数の POP を持っています)。

于 2012-04-13T08:46:58.467 に答える