2012-05-14 15 views
5

ho costruito un semplice server TCP utilizzando Netty e voglio benchmark con JMeter. Sto usando un JMeter TCP Sampler, usando il nome della classe BinaryTCPClientImpl per inviare byte. Ho controllato "nessun ritardo" e "riutilizzo della connessione". Presumo che questi siano per SO_NODELAY e SO_REUSEADDR. Sono in esecuzione 75 thread, ognuno con 1000 richieste TCP. Sento costantemente circa l'11% delle richieste non riuscire con:Netty + JMeter, gli errori quando il riutilizzo di connessione

500 java.net.SocketException: Software causato l'interruzione della connessione: errore di scrittura presa

Se io deselezionare "riutilizzo di connessione", quindi tutte le 75.000 richieste riuscire senza un singolo errore, ma il throughput è solo ~ 33% di quello che era.

c'è qualcosa che devo fare con il mio assistente Netty per evitare questi errori?

risposta

0

Vorrei sottolineare il mio server funziona così: accetta la connessione, riceve alcuni dati, invia alcuni dati, una volta che i dati vengono inviati chiude la connessione. I documenti di JMeter dicono che TCP Sampler chiude la connessione a meno che "riuso socket" sia selezionato, quindi suppongo che questo non sia SO_REUSEADDR. Presumo in alcuni casi il client invia i dati, riceve i dati, e prima che il server chiude il socket, il client tenta di inviare di nuovo i dati, quindi il server chiude la presa e JMeter pensa che la richiesta non riuscita.

Quindi, la soluzione è quella di non controllare "l'indirizzo riutilizzo". Chiusura del socket ogni richiesta è un comportamento previsto, in quanto i miei clienti comunicano relativamente di rado.

+0

Probabilmente si dovrebbe aggiungere questo alla tua domanda iniziale :) – Daan

+0

Credo che sia la risposta però. – NateS

Problemi correlati