Reservas de recursos

En la mayoría de los sistemas, los modelos de utilización de algunos recursos (conexiones a bases de datos, conexiones a la red, hilos de ejecución de la CPU) pueden tener una influencia directa sobre los resultados. En JMap Server, estos recursos se utilizan de manera muy eficaz recurriendo al principio de la puesta en común, que se describe del siguiente modo:

1.Se crean una cierta cantidad de instancias de recursos, que son inicializadas al inicio y que son puestas en reserva (ej. 3 conexiones a bases de datos);

2.Cuando una instancia de recurso es requerida por el sistema, el recurso se toma prestado a la reserva y se cierra (se vuelve indisponible) para los otros usuarios;

3.Se efectúan las tareas mediante este recurso (ejecución de peticiones SQL, por ejemplo);

4.Se devuelve el recurso a la reserva y se abre (se vuelve disponible) para los otros usuarios.

Este mecanismo es eficaz, puesto que los recursos se comparten entre distintas partes del sistema, lo que reduce su número. Además, la inicialización no tiene lugar sino al inicio de la sesión, lo cual mejora el rendimiento del sistema (el establecimiento de una conexión a la base de datos toma tiempo).

Llegado el caso de que una reserva esté desprovista de recursos (todas las conexiones se encuentran cerradas), nuevos recursos se inicializan automáticamente (la reserva crece), pero el rendimiento puede ser afectado. Si la demanda disminuye, la reserva volverá a su tamaño inicial luego de un período de tiempo. Resulta importante entonces elegir un tamaño inicial adecuado para cada reserva. Puede también indicar un tamaño máximo para una reserva y cuando se alcanza este límite, las peticiones siguientes se ponen en espera hasta que un recurso de la reserva esté nuevamente disponible. Para ayudarle, en JMap Admin se indican algunas estadísticas sobre la utilización de las reservas: el tamaño actual y el tamaño máximo alcanzado.

Para las reservas de conexiones de bases de datos, se exige un plazo de inactividad para automatizar el cierre y la reapertura de las conexiones inactivas, lo que impide que los sistemas de gestión de bases de datos cierren las conexiones después de un determinado período de inactividad.