2.3 Ajuste del rendimiento

El ajuste del rendimiento es un tema complejo. La aplicación de usuario del Gestor de identidades se basa en tecnologías diversas con varias interacciones. No es posible anticipar cada caso único de configuración o de interacción de usuarios con bajo rendimiento. No obstante, algunos subsistemas pueden estar sujetos a mejoras recomendadas que pueden incrementar el rendimiento. A continuación, las tratamos.

2.3.1 Registro

La aplicación de usuario permite registrar tanto a través de Novell Audit como de la estructura log4j de Apache de código abierto. Por defecto, el registro a través de Novell Audit está desactivado. No obstante, por defecto, el registro de la consola y archivos a través de log4j está habilitado.

NOTA:Los tipos de eventos que puede registrar y cómo habilitar o inhabilitar el registro, se tratan en Sección 5.0, Configuración de las entradas y en Sección 12.0, Configuración del registro más adelante en esta misma guía.

Los valores de configuración de log4j se encuentran en un archivo denominado log4j.xml en $IDMINSTALL/jboss/server/IDMProv/conf/. Cerca de la parte inferior de este archivo, encontrará la entrada siguiente:


<root>     <priority value="INFO" />     <appender-ref ref="CONSOLE" />     <appender-ref ref="FILE" /> </root>

Si asigna un valor a root, se asegurará de que cualquier agregador de registros que no tenga un nivel asignado herede explícitamente el nivel de root (en este caso, INFO). Por ejemplo, por defecto, el agregador FILE no tiene asignado un nivel de umbral y acepta el de root.

Los posibles niveles de registro que log4j utiliza son DEBUG, INFO, WARN, ERROR y FATAL, tal como están definidos en la clase org.apache.log4j.Level. Si no se presta atención al uso adecuado de estos valores, puede tener graves consecuencias sobre el rendimiento.

Por lo general, una buena estrategia es utilizar INFO o DEBUG sólo cuando se está depurando un problema determinado.

Cualquier agregador incluido en root que tenga un nivel umbral definido, lo deberá tener en ERROR, WARN o FATAL, a menos que, (como acabamos de explicar), esté depurando.

El resultado del rendimiento con un nivel de registros elevado tiene menos que ver con los detalles de los mensajes que con el simple hecho de que el registro de los archivos y la consola en log4j implica escrituras síncronas. Existe una clase AsyncAppender, si bien su uso no garantiza un mejor rendimiento. Los problemas (que son bien conocidos y están relacionados con log4j de Apache y no con el Gestor de identidades) se tratan en la dirección siguiente http://logging.apache.org/log4j/docs/api-1.2.8/org/apache/log4j/performance/Logging.html.

El valor por defecto de INFO en el archivo de configuración del registro (descrito más arriba) de la aplicación de usuario es adecuado para un gran número de entornos; sin embargo, cuando el nivel de rendimiento es fundamental, debe cambiar la entrada de log4j.xml anterior por:

<root> <priority value="ERROR"/> <appender-ref ref="FILE"/> </root>

Dicho de otro modo, elimine CONSOLE y defina el nivel de registro como ERROR. Para obtener una configuración de producción depurada y totalmente probada, no es preciso registrarse en el nivel INFO, ni tampoco es necesario dejar el registro de CONSOLE habilitado. La repercusión de su desactivación sobre el rendimiento puede ser significativa.

Para obtener más información acerca de log4j, consulte la documentación disponible en http://logging.apache.org/log4j/docs.

Para obtener más información acerca de cómo utilizar Novell Audit con el Gestor de identidades, consulte la publicación Novell Identity Manager Administration Guide (Gestor de identidades: Guía de administración).

2.3.2 Repositorio seguro de identidades

Las consultas de LDAP pueden producir atascos en un entorno de directorio-servidor de gran utilización. Para mantener un alto nivel de rendimiento con un gran número de objetos, Novell eDirectory (que es la base del repositorio seguro de identidades en el Gestor de identidades) registra la información más solicitada y la almacena en índices. Cuando se ejecuta una consulta compleja en objetos que tienen atributos con índices, la respuesta a la consulta es mucho más rápida.

Cuando se entrega, eDirectory tiene los atributos siguientes ya indexados:

Aliased Object Name cn dc Equivalent to Me extensionInfo Given Name GUID ldapAttributeList ldapClassList Member NLS: Common Certificate Obituary Reference Revision Surname uniqueID uniqueID_SS 

Cuando se instala el Gestor de identidades, el esquema del directorio por defecto se amplía con los nuevos tipos de clase de objeto y los nuevos atributos que pertenecen a la aplicación de usuario. Por defecto, los atributos específicos de la aplicación de usuario no están indexados. Para obtener un mejor rendimiento, probablemente le será útil indexar algunos atributos (y puede que también algunos atributos LDAP tradicionales), en especial, si su contenedor de usuarios va a contener más de 5.000 objetos.

La idea general consiste en indexar sólo aquellos atributos que sabe que se consultarán regularmente. (Que muy bien podrían ser diferentes atributos para diferentes entornos de producción). La única manera de saber con seguridad qué atributos se van a utilizar más a menudo es recopilar estadísticas de predicados en el tiempo de ejecución. (No obstante, el proceso de recolección produce una degradación del rendimiento).

El proceso de recolección de estadísticas de predicado se trata en profundidad en la publicación eDirectory Administration Guide (Novell eDirectory: Guía de administración). En dicha guía también encontrará una descripción en profundidad de los índices. Normalmente, tendrá que hacer lo siguiente:

  • Utilizar ConsoleOne para activar la recolección de estadísticas de predicados para detectar los atributos de interés
  • Poner el sistema en carga
  • Inhabilitar la recolección de estadísticas y analizar los resultados
  • Crear un índice por cada tipo de atributo que sea interesante tener

Si ya sabe qué atributos desea indexar, no necesita utilizar ConsoleOne. Puede crear y gestionar índices en iManager mediante Mantenimiento de eDirectory > Índices. Por ejemplo, si sabe que los usuarios del organigrama corporativo probablemente realizarán búsquedas basadas en el atributo isManager, puede intentar crear un índice para dicho atributo para ver si mejora el rendimiento.

NOTA:Como práctica recomendada, se aconseja crear un índice, como mínimo, de los atributos manager e isManager.

Para consultar un estudio detallado de los índices de atributos y el rendimiento, vaya al capítulo dedicado al “ajuste de eDirectory” en la publicación Novell’s Guide to Troubleshooting eDirectory (Guía de Novell para la resolución de problemas de eDirectory) de Peter Kuo y Jim Henderson (QUE Books, ISBN 0-7897-3146-0).

Consulte también el capítulo “Maintaining Novell eDirectory” (Mantenimiento de Novell eDirectory) que contiene una orientación para ajustar el rendimiento, en la publicación eDirectory Administration Guide (Novell eDirectory: Guía de administración).

2.3.3 JVM

La cantidad de memoria de pila asignada a la máquina virtual de Java puede repercutir sobre el rendimiento. Si especifica valores máximos o mínimos de memoria demasiado altos o bajos (y por demasiado altos se entiende valores por encima de la memoria física de la máquina), podría sufrir un intercambio excesivo del archivo de paginación.

Puede definir el tamaño de JVM máximo para el servidor JBoss editando el archivo run.conf o run.bat (el primero para Linux y el segundo para Windows) en [IDM]/jboss/bin/ en un editor de texto. Aumente “-Xmx” de 128m a 512m o más si es posible. Es posible que sea necesario hacer pruebas para determinar cuál es el valor óptimo para su entorno concreto.

NOTA:Puede encontrar consejos de ajuste de rendimiento de JBoss y Tomcat en http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossASTuningSliming

2.3.4 Valor de tiempo límite de la sesión

El tiempo límite de la sesión (tiempo que un usuario puede dejar una página sin atender en su navegador Web antes de que el servidor haga aparecer un diálogo de advertencia de tiempo límite de la sesión) puede cambiarse en el archivo web.xml del archivo IDM.war. Este valor debe ajustarse para que se adapte al entorno de uso y del servidor donde se ejecutará la aplicación. Por lo general, se aconseja que el tiempo límite de la sesión sea lo mínimo posible. Si los requisitos de la empresa pueden permitir un tiempo límite de sesión de 5 minutos, el servidor podría liberar los recursos no utilizados en la mitad de tiempo que si el valor de tiempo límite fuera de 10 minutos. Esto permite que la aplicación Web tenga un mayor rendimiento y se pueda ampliar más.

Cuando ajuste el tiempo límite de una sesión, tenga en cuenta las consideraciones siguientes:

  • Los tiempos límite de sesión largos pueden hacer que el servidor JBoss se quede sin memoria, si varios usuarios deciden entrar en un corto espacio de tiempo. Y lo mismo ocurre con cualquier servidor de aplicación que tenga demasiadas sesiones abiertas.
  • Cuando un usuario entra en la aplicación de usuario, se crea una conexión LDAP para el usuario y se vincula a la sesión. Por consiguiente, cuantas más sesiones haya abiertas, mayor será el número de conexiones LDAP mantenidas. Cuanto más dure el tiempo límite de una sesión, más tiempo estarán abiertas dichas conexiones. Y demasiadas conexiones abiertas en el servidor LDAP (aunque estén inactivas) pueden producir una degradación del rendimiento del sistema.
  • Si el servidor empieza a experimentar errores OutOfMemoryErrors y los parámetros de ajuste de recolección de datos inservibles y de la pila JVM ya se han definido en un nivel óptimo, debería considerar la posibilidad de disminuir el tiempo límite de sesión.

Para ajustar el valor de tiempo límite de la sesión, necesitará abrir el archivo de reserva IDM.war, encontrar el archivo web.xml que contiene y editar la parte siguiente de dicho archivo (en concreto, el valor numérico que aquí se muestra como 20 para indicar 20 minutos, que es el valor por defecto):

<session-config>     <session-timeout>20</session-timeout> </session-config>

A continuación, deberá guardar el archivo y el archivo de reserva y reiniciar el servidor.

NOTA:La edición manual de los archivos de reserva de Web debe efectuarla personal experimentado en la instalación y desarrollo de aplicaciones Web Java.