web-dev-qa-db-ja.com

apachebenchがサーバーに接続する速度を制限する方法はありますか?

非常に大きなファイルを強制的にダウンロードする特定のPHPスクリプトをストレステストしようとしていますが、特に接続が遅いクライアントがリクエストを行っている場合は、残りの方法も同時にテストしたいと思います。私はFiOSを使用しているので、数十の同時接続を実行しても、サーバーにそれほど長い間負荷がかかることはありません(同時接続が多くなるとは予想されないため、ボリュームは気にしません)このファイルの場合、数十個の非常に遅いファイル)で、たとえば100kb /秒の遅い接続であるかのようにテストしたいと思います。ApacheBenchmarkがサイトに接続する速度を制限する方法はありますか?またはありますか?このサイトへの接続を一時的に制限する別の方法は?Mac OS Xをローカルで実行していて、サーバーはApacheを実行しているWindowsボックスです。

1
Chris Bloom

1つの可能性は、OS XのIPFW機能セットを使用することです。IPFWは、トラフィックシェーピングもサポートするOSXのソフトウェアファイアウォールです。構成方法は次のとおりです(WebサーバーのIPアドレスとして1.2.3.4を想定)。

  1. ターミナルアプリケーションを開いて、コマンドラインを取得します。
  2. 仮想ネットワークデバイスを作成する
    Sudo ipfw pipe 1 config bw 15Kbyte/s
  3. 仮想デバイスを介してWebサーバーとの間でトラフィックをリダイレクトする2つのルールを作成します。
    Sudo ipfw add 1 pipe 1 ip from 1.2.3.4 to anySudo ipfw add 2 pipe 1 ip from any to 1.2.3.4

これで、OSXコンピューターとWebサーバー間のすべてのトラフィックが15KB /秒に制限されます(必要に応じてこの値を変更してください)。

設定を削除して無制限の帯域幅に戻すには:
Sudo ipfw delete 1
Sudo ipfw delete 2
ipfw pipe delete 1

警告:
1。一度設定した構成が再起動後も存続するかどうかはわかりません。
2。これは、ソフトウェアファイアウォールがまだ構成されていないことを前提としています。存在する場合、ルール1と2がすでに存在している可能性があり、ここでのコマンドはエラーを引き起こします。

お役に立てれば。

1
Urgoll

あなたがそうしてくれてうれしいです。多くの人々は、ラボを出て「実際のインターネット」に移行すると、アプリの動作が根本的に異なることを理解していません。

あなたが探しているものの一般的なカテゴリは、WANエミュレータです。帯域幅だけでなく、遅延、ジッター、その他の要因を変化させたい場合は、これを約2,000ドルから行うハードウェアデバイス(およびソフトウェア)を販売しています。 ShunraとLinktropyは2つの優れたサプライヤーです。

しかし、ソフトウェアのみのソリューションもたくさんあります。それらのほとんどはLinuxで実行されますが、OSXで動作するようにだまされているものもあると思います。 Wanem は良い無料のものです。 ns-2 は無料のシミュレーターです。これは、必要なものとは異なり、おそらくより複雑です。偽のネットワークを構築し、それをシミュレートします。

またはダミーネットですが、それをアーゴルの良い答えに追加します。

0
Ernest Mueller