2012-05-07 15 views
6

Estoy usando el cliente http asincrónico ning para lograr la bondad sin bloqueo. Al hacer una prueba manzanas versus manzanas (sin bloqueo versus bloqueo), veo que la versión no bloqueada está sirviendo más muestras de solicitudes, sin embargo, el cliente http asincrónico está creando más hilos en comparación con su contraparte de bloqueo. ¿Se espera esto o algo que me falta?Async http client (ning) crear más hilos?

Éstos son los números de la prueba de esfuerzo

Async Http Client 
jMeter - 2 threads, 120 seconds, 1 sec ramp up 
Peak threads : 270 
Heap usage: 600mb 
Peak cpu usage: 30% 
Total samples: 18228 

Blocking version 
jMeter - 2 threads, 120 seconds, 1 sec ramp up 
Peak threads: 118 
heap usage: 260mb 
cpu usage: 18% 
total samples: 1472 

Estoy creando un grupo de subprocesos de conexiones (reutilizándolas)

AsyncHttpClientConfig.Builder builder = new AsyncHttpClientConfig.Builder(); 
builder.setRequestTimeoutInMs(2000); 
builder.setMaximumConnectionsPerHost(10); 
builder.setMaximumConnectionsTotal(100); 
client = new AsyncHttpClient(builder.build()); 

¿Hay algo que estoy perdiendo aquí? Traté de ver el volcado de subprocesos para ver qué está creando subprocesos, pero no encontré nada útil. Mi apuesta es que hay un hilo por cada conexión http que se genera para activar la devolución de llamada en la finalización de E/S en el cliente http asincrónico.

Respuesta

11

EDITAR 11/16/2015

Parece que el repositorio se movió. Consulte this line donde puede cambiar el ThreadFactory utilizado. Si no está configurado, parece que usa uno predeterminado. Esto es utilizado por ChannelManager here.

También puede establecer que en la simple cliente como se ve here

ORIGINAL w/enlaces muertos removidos

Una mirada rápida en el código - se ve como el grupo de subprocesos aplicación utiliza un servicio Ejecutor es un grupo de subprocesos en caché, que crea subprocesos según sea necesario. Puede establecer el servicio de ejecutor que utiliza su cliente utilizando el colocador en el generador.

+0

Grandes, gracias tanto – Vinodh

+0

https://github.com/AsyncHttpClient/async-http-client/blob/master/api/src/main/java/org/asynchttpclient/AsyncHttpClientConfig.java ¿le importaría a identificar línea 160 un poco más (como el nombre de la función, qué ver allí), ya que cambió en la versión reciente –

+0

Los enlaces aquí no están funcionando! –