2012-05-14 8 views
5

Creé un servidor TCP simple usando Netty y quiero compararlo con JMeter. Estoy usando un muestreador TCP de JMeter, usando el nombre de clase BinaryTCPClientImpl para enviar bytes. He verificado "sin demora" y "conexión de reutilización". Supongo que son para SO_NODELAY y SO_REUSEADDR. Estoy ejecutando 75 subprocesos, cada uno haciendo 1000 solicitudes TCP. Me veo constantemente alrededor del 11% de las solicitudes de fallar con:Netty + JMeter, errores al reutilizar la conexión

500 java.net.SocketException: Software causados ​​conexión de aborto: error de escritura de socket

Si desactiva la opción "reutilización de conexiones", entonces todos los 75.000 solicitudes tener éxito sin un solo error, pero el rendimiento es solo ~ 33% de lo que era.

¿Hay algo que deba hacer con mi servidor Netty para evitar estos errores?

Respuesta

0

Debo señalar que mi servidor funciona así: acepta la conexión, recibe algunos datos, envía algunos datos, una vez que se envían los datos, cierra la conexión. JMeter dice que TCP Sampler cierra la conexión a menos que esté marcado "reuse socket", así que supongo que esto no es SO_REUSEADDR. Supongo que en algunos casos el cliente envía datos, recibe datos, y antes de que el servidor cierre el socket, el cliente intenta enviar datos nuevamente, luego el servidor cierra el socket y JMeter cree que la solicitud falló.

Por lo tanto, la solución es no marcar "reutilizar la dirección". Cerrar el socket cada solicitud es un comportamiento esperado, ya que mis clientes se comunican con poca frecuencia.

+0

Probablemente deberías agregar esto a tu pregunta original :) – Daan

+0

Creo que es la respuesta. – NateS

Cuestiones relacionadas