TCPサーバーの実装をテストする方法は?
-
22-07-2019 - |
質問
TCPエコーサービスとして機能するアプリケーションを作成するTCPサーバー実装を作成しました。
次は、このエコーサーバーをテストします
- 処理できる接続の数
- 応答時間とは
- 使用するメモリとCPUの量
このエコーサーバーをテストするための標準的な方法/ツールを提案してください。 TCPとエコーサーバーの実装はどちらもかなり標準的な慣行であると理解しているので、テストするための確立されたツールを見つけたいと思っています。
P.S .:独自のテストアプリケーションを作成することはできますが、何か問題が発生した場合は、サーバーが間違っていることを確認する必要があるため、実行したくありません。最初にテストクライアントをテストしたくありません。
この実装はC#と.NET 3.5を使用して作成しましたが、質問を参照しても問題ないと考えています。
解決
あなたに役立つ無料のツールがあります。 C ++サーバーフレームワークで構築されたサーバーのテストに使用します。このツールは、 http:// wwwから入手できます。 lenholgate.com/blog/2005/11/windows-tcpip-server-performance.html 。ターゲットサーバーへの構成可能な接続数を構成可能なレートで作成し、各接続でデータを送信することができます(再び構成可能なレートで)。
それを使用する最良の方法は、サーバーとは別のマシンで実行することです(かなりわかりますが...)、場合によっては複数の異なるマシンで複数のコピーを実行することです。 4000を超える接続ができない場合は、クライアントを実行しているマシンの MAX_USER_PORT
レジストリ設定を微調整する必要がある可能性が高いことに注意してください。
TCPコードをテストしたら、サーバーがサポートするプロトコルをテストする必要がある場合があります。 CodeProject( httpで利用可能なC#でこのような状況のテストツールを作成しました。 //www.codeproject.com/KB/IP/testingsocketservers.aspx )。これにより、「プラグイン」を記述できます。プロトコルをサポートし、プロトコルにとらわれないもの(多くの接続、断片化された読み取りを得るためにメッセージを分割するなど)を処理します。設計はやや厄介な接続ごとのスレッド設計であり、接続の数が多い場合は非同期設計を使用して何かを再実装することをお勧めしますが、そのためのC ++ツールがあるため、このテストプログラムを変更することはできませんでした。 。
他のヒント
以前と同じ状況で、FunkLoadを使用しました。小さなクライアントをPythonコードのスニペットとして作成できる場合、FunkLoadはサーバーに対して必要なだけ実行し、結果をグラフ化します:
一連のテストサーバーに対する完全に作成された例は、公開されているソースコードリポジトリが役立つ場合に備えて、Pythonネットワークプログラミングの基礎の第2版の目玉です。
https://github.com/brandon-rhodes/fopnp/ tree / m / py2 / chapter07