これはちょっと奇妙な質問だと思います。私は通常、すべてのユーザーのインターネット接続が遅いという「仮定」に基づいてアプリケーションを開発しています。しかし、遅いインターネット接続をプログラムでシミュレートする方法があると誰もが思うので、さまざまな「接続速度」の下でアプリケーションがどのように動作するかを「見る」ことができますか?
どの言語が使用されているか心配していません。また、コードサンプルなどを探しているのではなく、その背後にあるロジックにのみ興味があります。
Windowsを実行している場合、 fiddler は素晴らしいツールです。モデムの速度をシミュレートする設定があり、さらに制御したい人のために 各リクエストにレイテンシを追加するプラグイン があります。
レイテンシコードをアプリケーションに配置するよりもはるかに現実的なシミュレーションであり、実際のビットを設計したりコーディングしたりしないので、このようなツールを使用することを好みます。最良のコードは、書く必要のないコードです。
を追加:Software Technologiesに関するPavel Donchevのブログのこの記事では、カスタムのシミュレートされた速度を作成する方法を示します。 Fiddlerでインターネット接続速度を制限する 。
http://www.netlimiter.com/ を使用していましたが、非常にうまく機能します。単一プロセスの速度を制限するだけでなく、実際の転送速度も示します。
Linuxマシンでは、wondershaper
を使用できます
apt-get install wondershaper
$ Sudo wondershaper {interface} {down} {up}
{down}および{up}はkpbs単位の帯域幅です
たとえば、インターフェースeth1の帯域幅を256kbpsアップリンクと128kbpsダウンリンクに制限する場合、
$ Sudo wondershaper eth1 256 128
制限をクリアするには、
$ Sudo wondershaper clear eth1
IprelayやSloppyのようなTCPプロキシがあり、低速の接続をシミュレートするために帯域幅シェーピングを行います。また、ipfwやiptablesなどのIPフィルタリングツールを使用して、帯域幅シェーピングを行い、パケット損失をシミュレートできます。
Dummynet を試すことができます。キューと帯域幅の制限、遅延、パケット損失、マルチパス効果をシミュレートできます
Charlesや Fiddler などの調整機能を備えたWebデバッグプロキシを使用します。
あなたはそれらが一般的に有用なウェブ開発を見つけるでしょう。大きな違いは、Charlesはシェアウェアであるのに対し、Fiddlerは無料であることです。
NetEm(Network Emulation) をプロキシサーバーとして使用して、多くのネットワーク特性をエミュレートできます(速度、遅延、パケット損失、等。)。 iproute2 パッケージを使用してネットワークを制御し、ほとんどのLinuxディストリビューションのカーネルで有効になっています。
tc
コマンドラインアプリケーション(iproute2パッケージから)によって制御されますが、NetEm用のWebインターフェイスGUIもいくつかあります。たとえば、 PHPnetemGUI2 。
利点は、私が書いたように、異なるネットワーク速度だけでなく、たとえば、パケット損失、複製および/または破損、ランダムまたは定義された遅延などをエミュレートできるため、さまざまなパフォーマンスの低いネットワークをエミュレートできることです。
アプリケーションでは完全に透過的であるため、NetEmプロキシサーバーを使用するようにオペレーティングシステムを構成できるため、そのマシンからのすべての接続はNetEmを経由します。または、プロキシとして使用するようにアプリケーションのみを構成できます。
さまざまなエミュレートされたパフォーマンスの低いネットワークでAndroidアプリのパフォーマンスをテストするために使用しています。
TCPMon のようなツールを使用します。接続が遅くなる可能性があります。
基本的には、まったく同じものを要求し、実際のサーバーにまったく同じ要求を転送し、設定されたバイト数だけ応答を遅延させます。
10.10以降のMac OSXには Murus Firewall と呼ばれるアプリがあり、これはipfwの代わりとなるpfのGUIとして機能します。
システム全体またはドメイン固有の調整に非常に適しています。ストリーミングビデオプレーヤーの調整方法をテストするために、300Kbpsから30Mbpsの間でダウンロード速度をスライドさせるために使用できました。
私が探していた答えが言及されていなかったので、これを(それが尋ねられてから9年後に)更新しました:
Firefoxには、接続速度を調整するためのプリセットもあります。開発者ツールのNetwork Monitorタブでそれらを見つけます。デフォルトは「スロットルなし」です。
最も遅いGPRS(ダウンロード速度:50 Kbps、アップロード速度:20 Kbps、最小遅延(ms):500 )、「good」および「regular」2G、3G、4GからDSLおよびWiFi(ダウンロード速度:30Mbps、アップロード速度:15Mbps、最小レイテンシ(ms):2)。
Dev Tools docs の詳細。
WIPFWと呼ばれる別のツールもあります- http://wipfw.sourceforge.net/
それは少し古い学校ですが、それを使用してより遅い接続をシミュレートできます。 Windowsベースであり、このツールを使用すると、管理者はルーターが特定のマシンから取得しているトラフィックの量や、転送しているWWWトラフィックの量などを監視できます。