2012-05-14 13 views
5

Ich baute einen einfachen TCP-Server mit Netty und ich möchte es mit JMeter Benchmarks. Ich benutze einen JMeter TCP-Sampler, der den BinaryTCPClientImpl-Klassennamen zum Senden von Bytes verwendet. Ich habe überprüft "keine Verzögerung" und "Verbindung wiederverwenden". Ich nehme an, diese sind für SO_NODELAY und SO_REUSEADDR. Ich führe 75 Threads aus, die jeweils 1000 TCP-Anfragen ausführen. Ich sehe durchweg über 11% der Anfragen mit fehlschlagen:Netty + JMeter, Fehler bei der Wiederverwendung der Verbindung

500 java.net.SocketException: Software Verbindungsabbruch verursacht: socket Schreibfehler

Wenn ich „Verbindung wiederverwenden“ deaktivieren Sie dann alle 75.000 Anfragen Erfolg ohne einen einzigen Fehler, aber der Durchsatz ist nur ~ 33% von dem, was es war.

Muss ich etwas mit meinem Netty-Server machen, um diese Fehler zu vermeiden?

Antwort

0

Ich sollte beachten, mein Server funktioniert so: akzeptiert Verbindung, empfängt einige Daten, sendet einige Daten, sobald die Daten gesendet werden, schließt die Verbindung. JMeter Docs sagen, dass TCP Sampler die Verbindung schließt, es sei denn, "reuse socket" ist aktiviert, also denke ich, dass dies nicht SO_REUSEADDR ist. Ich gehe davon aus, dass der Client in einigen Fällen Daten sendet, Daten empfängt und bevor der Server den Socket schließt, versucht der Client erneut Daten zu senden, dann schließt der Server den Socket und JMeter denkt, dass die Anfrage fehlgeschlagen ist.

Also, die Lösung ist nicht zu überprüfen "Wiederverwendung Adresse". Beim Schließen des Sockets wird jede Anfrage erwartet, da meine Clients relativ selten kommunizieren.

+0

Sie sollten dies wahrscheinlich zu Ihrer ursprünglichen Frage hinzufügen :) – Daan

+0

Ich denke, es ist die Antwort obwohl. – NateS

Verwandte Themen