Frage

Ich habe eine TCP-Server-Implementierung geschrieben mit denen ich eine Anwendung erstellt, die arbeiten als TCP-Dienst Echo.

Jetzt möchte ich dieses Echo-Server testen, in Bezug auf die

  • Wie viele Verbindungen kann es handle
  • Was ist die Reaktionszeit
  • Wie viel Speicher und CPU nutzt

Bitte können Sie vorschlagen, keine Standardmethode / Werkzeuge dieses Echo-Server zu testen. Ich verstehe, dass TCP und Echo-Server-Implementierung ziemlich gängige Praxis ist, so hoffe ich etablierte Werkzeuge zu finden, um es zu testen.

P. S .: Ich kann meine eigene Testanwendung schreiben, aber ich will es nicht tun, weil, wenn ich ein Problem sehen, muss ich sicher sein, dass es mein Server ist, dass es falsch macht. Ich möchte nicht, zuerst meinen Test-Client, um am Ende zu testen.

Ich schrieb diese Implementierung mit C # und .NET 3.5, obwohl ich es spielt keine Rolle, mit Bezug auf die Frage glaube.

War es hilfreich?

Lösung

Ich habe ein kostenloses Tool, das Ihnen helfen könnte. Ich benutze es für die Test-Server, die mit meinem C ++ Server-Framework aufgebaut sind. Das Tool finden Sie hier: http: // www. lenholgate.com/blog/2005/11/windows-tcpip-server-performance.html . Es ermöglicht Ihnen, eine konfigurierbare Anzahl von Verbindungen zu Ihrem Zielserver in einem konfigurierbaren Rate zu erstellen und dann Daten senden an jeder Verbindung (wieder in einem konfigurierbaren Rate).

Wenn feststellen, dass der beste Weg, es zu benutzen, ist es auf einem anderen Rechner auf den Server ausgeführt werden (ziemlich offensichtlich, dass ich weiß, aber ...) und möglicherweise mehrere Kopien auf mehreren verschiedenen Rechnern zu laufen. Beachten Sie, dass, wenn Sie feststellen können nicht mehr machen, als um 4000 Verbindungen dann sehr wahrscheinlich es ist, dass Sie Ihre MAX_USER_PORT Registrierungseinstellung auf der Maschine optimieren müssen, die den Client ausgeführt wird.

Wenn Sie Ihr TCP Code getestet haben Sie möglicherweise notwendigen Informationen um das Protokoll zu testen, die der Server unterstützt. Ich schrieb in C #, um ein Test-Tool für diese Art von Situation, die auf Codeproject zur Verfügung steht ( http: //www.codeproject.com/KB/IP/testingsocketservers.aspx ). Auf diese Weise können Sie ein „Plugin“ schreiben, das Protokoll zu unterstützen und behandelt das Protokoll Agnostiker stuff (viele Verbindungen, brechen Nachrichten, so dass Sie fragmentiert erhalten liest, etc.) für Sie. Das Design ist ein ziemlich unangenehmes Thread-per-Anschluss Design und für eine höhere Anzahl von Verbindungen werden Sie besser dran Neuimplementierung etwas sein, ein asynchrones Design verwenden, aber ich habe meine C ++ Tools für das so nie Ich habe um dieses Testprogramm zu ändern .. .

Andere Tipps

In Ihrer gleichen Situation vor, ich habe FunkLoad verwendet. Wenn Sie einen kleinen Client als Ausschnitt aus Python-Code schreiben können, dann wird FunkLoad wie viele von denen auf dem Server ausgeführt, wie Sie wollen, und die Ergebnisse grafisch darzustellen:

https://funkload.nuxeo.org/

Ein vollständig ausgearbeitetes Beispiel gegen eine Reihe von Test-Server ist das Herzstück der zweiten Ausgabe meiner Grundlagen der Programmierung Buchs Python-Netzwerkes, bei der öffentlichen Quellcode-Repository ist eine Hilfe:

https://github.com/brandon-rhodes/fopnp/ Baum / m / py2 / chapter07

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top