データスループットをテストするには、1)X秒間ランダムデータを送信し、2)TCPを介してランダムデータを送信し、4)送信されたバイト数を正確に知りたいです。
私の最善の試み(多くはありません)
1
)
タイムアウトwc -c
失敗した場合は、任意のデータをtee
ファイルにパイプ/dev/tcp
し、タイムアウトが期限切れになったらファイルのバイトサイズを計算できますか?
誰もがこれを行うためにエレガントなbashコマンドを提供できますか?
[更新]これはLinux用のカスタムバージョンです。 Safe Dolphinでは、すべてのコマンドを使用できるわけではありません。すべての提案を確認し、できるだけ早く回答いたします。
答え1
ソリューションをリクエストしたので、私が言及したソリューションと@SatoKatsuraが言及したソリューションを提供します。まず、ランダムなネットワーク負荷を生成することは、一般に負荷テストを実行する最も有用な方法ではありません。作業量の多い現実を再現しなければならないことが多いです。それにもかかわらず、ある種の競合負荷の下で他のワークロードのパフォーマンスに関する情報を探したい場合は、パイプラインにランダムなデータを入れることは依然として合理的です。
あなたが言及したものから欲しいものを得る最も直接的な方法は、私がコメントで言及したことですnc
。任意のポートでリッスンし、出力を次にリダイレクトするようにリスナーを設定します/dev/null
。
[root@listeningServerFQDN ~]# nc -l listeningServerFQDN 1023 >/dev/null
その後、クライアント側でnc
再利用して/dev/urandom
リモート側にデータを送信します。
[root@transmit ~]# dd if=/dev/urandom count=65535 bs=1500 | nc listeningServerFQDN 1023
その後、必要なツールを使用できます。
考えられる解決策は次のとおりです。もう一つはiperf
@SatoKatsuraが言及したツールです。これは必要なネットワークエンジニアに適しています。一部何らかの理由でネットワークでロードが実行されています。たとえば、実装するQoSポリシーをテストしたい場合です。この場合、ワークロードを表すかどうかは気にせず、帯域幅が適切に調整されているかどうかをテストするだけです。
デフォルトiperf
の使用法にはサーバープロセスの設定が含まれます。
[root@listeningServerFQDN ~]# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
その後、クライアントでテストを実行します。
[root@transmit ~]# iperf -c listeningServerFQDN -r
bind failed: Address already in use
------------------------------------------------------------
Client connecting to transmit.example.com, TCP port 5001
TCP window size: 2.50 MByte (default)
------------------------------------------------------------
[ 4] local 10.762.40.95 port 54610 connected with 10.762.40.95 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.0 sec 37.1 GBytes 31.8 Gbits/sec
サーバーインスタンスで繰り返し、私の出力に以下を追加します。
[ 4] local 10.762.40.95 port 5001 connected with 10.762.40.95 port 54610
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.0 sec 37.1 GBytes 31.7 Gbits/sec
------------------------------------------------------------
Client connecting to 10.762.40.95, TCP port 5001
TCP window size: 4.00 MByte (default)
------------------------------------------------------------
[ 4] local 10.762.40.95 port 54640 connected with 10.762.40.95 port 5001
[ 5] local 10.762.40.95 port 5001 connected with 10.762.40.95 port 54640
[ 4] 0.0-10.0 sec 37.4 GBytes 32.1 Gbits/sec
[ 5] 0.0-10.0 sec 37.4 GBytes 32.1 Gbits/sec
明らかにそこから分岐することができますが、一般的なアイデアを得て、他のすべてのコンテンツはマニュアルページを見ることができます。
私の視点では:nc
あなたの基準が実際に「パイプにランダムなデータを送信する」場合は、実際にこのソリューションに固執します。nc
これは、それ以上の作業を実行するために使用できる一般的に便利なツールであり、ユースケースがiperf
非常に狭いと考えられています。
別の「パイプラインのランダムデータ」テストを実行する代わりにnc
(またはより使い慣れたツールを使用して)基本テストを実行し、次に段階的に実際の負荷をシミュレートします。iperf