jetty jmeter keep-alive

JMeter, Jetty Performance test y Keep-Alive



jmeter websocket (1)

Supongo que, dado que Keep-Alive es lo que permite la reutilización de HTTP Connection (y por lo tanto, socket), se están quedando sin números de puerto efímeros disponibles: solo hay 64k números de puerto y las conexiones deben tener combinaciones de puertos cliente / servidor únicos. (y el puerto del servidor es fijo), puede pasar rápidamente por ellos. Ahora bien, si los puertos fueran reutilizables tan pronto como la conexión se cerrara por un lado, no importaría: sin embargo, según las especificaciones TCP, ambos lados DEBEN esperar una cantidad de tiempo configurable (predeterminado: 2 minutos) hasta que la reutilización se considere segura.

Para obtener más información, puede leer un libro TCP (como "Stevens book"); arriba es una simplificación.

Ok, entonces creé un WAR muy simple que sirve un simple Hello World .jsp. Con todo el HTML, está a unos 200 bytes.

Implementado en mi servidor con Jetty 7.5.x jdk 6u27 En mi computadora cliente, creo un plan de prueba JMeter simple con: Grupo de subprocesos, Solicitud HTTP, Aserción de respuesta, Cliente de informe de resumen también ejecutando jdk6u27

Configuré el grupo de subprocesos en 5 subprocesos en ejecución durante 60 segundos y obtuve 5800 solicitudes / seg. Luego configuré 10 subprocesos y obtuve 6800 solicitudes / seg.

El momento en que desactivo Keep-Alive en JMeter en la muestra HTTP Request. Parece que tengo muchas pausas grandes en el lado del cliente, supongo, no parece que el servidor reciba nada. Tengo menos pausas en 5 hilos o apenas en ninguna pero a 10 hilos cuelga casi todo el tiempo.

Que significa exactamente?

Ten en cuenta que técnicamente estoy creando un servicio REST y estaba teniendo el mismo problema, así que pensé que tal vez estaba haciendo algo funky en mi servicio, hasta que descubrí que es un problema Keep-Alive ya que lo está haciendo prácticamente en un aplicación web staic. Entonces en realidad tendré 1 cliente solicite 1 respuesta del servidor. El cliente no mantendrá la conexión abierta.