iberck
11/18/2015 - 1:49 AM

Peticiones asíncronas HTTP

Peticiones asíncronas HTTP

Peticiones asíncronas (en el servidor)

Cada petición de un cliente utiliza un thread en el servidor. Cuando las peticiones son largas, se ocupa el thread del servidor durante todo ese tiempo. Con el modelo asíncrono se libera al thread para que pueda atender otras peticiones mientras se realiza el procesamiento en un thread distinto (en un background thread). Este esquema permite tener conversaciones largas entre el cliente y el servidor para utilizar tecnologías como HTTP Push o commet. Este nuevo modelo desacopla el procesamiento en el servidor y el manejo de conexiones.

En tomcat por default hay 200 threads para atender las conexiones, si todos quedan ocupados (es probable cuando son peticiones largas) las demás peticiones se quedan en espera y pueden lanzar timeouts. Con un esquema asíncrono esos 200 threads podrían atender millones de peticiones ya que las peticiones/respuestas serían muy cortas y estarían disponibles muy rápidamente para atender otras peticiones.

El cliente (browser) crea una conexión con el servidor y queda abierta, el server procesa el request y le devuelve una respuesta asíncrona (se ejecuta en un background-thread del servidor y se libera el thread de la petición) al cliente sobre el canal que se encuentra abierto.