IBM WebSphere Application Server, Advanced Edition

Guía de ajuste


Novedades del ajuste del rendimiento

Asistente de ajustador de rendimiento

Antememoria de fragmentos dinámica

Conceptos básicos sobre el ajuste

   ¿Qué afecta al ajuste?

   Tabla de síntomas

   Tipos de ajustes

      Ajuste de parámetros

           Ajuste de parámetros de gran impacto
           Ajuste de parámetros para evitar anomalías

    Ajuste de colas del sistema WebSphere Application Server

       Red de colocación en cola de WebSphere

             Colas cerradas frente a colas abiertas
             Valores de cola en WebSphere

       Determinación de los valores

             Colocación en cola antes de WebSphere

             Cómo dibujar una curva de productividad

             Ajustes de cola
             Ajustes de cola para patrones de acceso

       Colocación en cola y enterprise beans

       Colación en cola y creación de clústeres

    Ajuste de Secure Socket Layer

      Visión general del inicio de comunicación (handshake) y del cifrado/descifrado masivo

       Cómo mejorar el rendimiento de Secure Socket Layer

    Lista de comprobación del rendimiento del conjunto de aplicaciones

    Ajuste de la memoria de Java

       El cuello de botella de la recogida de basura

       La calibración de la recogida de basura

       Detección de la sobreutilización de objetos

       Detección de falta de memoria

       Parámetros de almacenamiento dinámico de Java

    Número de conexiones con DB2

    Parámetros TCP de Solaris

    Topología de la gestión de la carga de trabajo

Parámetros de rendimiento individuales

    Valores y capacidad del hardware

       Velocidad del procesador

       Memoria

       Red

    Valores del sistema operativo

       Parámetros TCP/IP de Windows NT/2000

             TcpTimedWaitDelay de Windows NT/2000
             MaxUserPort de Windows NT/2000

       AIX (4.3.3)

             Descriptores de archivos AIX (ulimit)

       Solaris

             Descriptores de archivos Solaris (ulimit)
             tcp_close_wait_interval/tcp_time_wait_interval de Solaris
             tcp_fin_wait_2_flush_interval de Solaris
             tcp_keepalive_interval de Solaris
             Otros parámetros TCP de Solaris
             Kernel semsys:seminfo_semume de Solaris
             Kernel semsys:seminfo_semopm de Solaris

       HP-UX 11

             Establecimiento del tamaño de página virtual en 64 K para la JVM de WebSphere Application Server
             tcp_conn_request_max de HP-UX 11
             Recomendaciones sobre los parámetros del kernel de HP-UX 11

    El servidor Web

       Intervalo de recarga de la configuración del servidor Web

       IBM HTTP Server - AIX y Solaris

             MaxClients
             MinSpareServers, MaxSpareServers y StartServers

       Netscape Enterprise Server - AIX y Solaris

             Hebras activas

       Microsoft Internet Information Server - Windows NT/2000

             Propiedades de los permisos de Internet Information Server (IIS)
             Número de aciertos esperados por día
             Parámetro ListenBackLog

       IBM HTTP Server - Linux

             MaxRequestsPerChild

       IBM HTTP Server - Windows NT/2000

             ThreadsPerChild
             ListenBackLog

    El proceso de WebSphere Application Server

       Ajuste de la prioridad de los procesos del servidor de aplicaciones

       Contenedores Web

             Número máximo de conexiones ThreadsMax del contenedor Web
             Número máximo de conexiones activas del transporte
             Número máximo de peticiones del transporte por conexión activa
             Antememoria de invocación de URL
             Permitir asignaciones de hebras por encima del número máximo

       Contenedor EJB

             Valores de la antememoria
             División de los enterprise beans CMP en varios módulos de enterprise beans

      Seguridad

             Desactivación de la seguridad cuando no se necesite
             Ajuste preciso del tiempo de espera de la antememoria de seguridad para el entorno
             Tipos de antememoria de seguridad y tamaños (parámetros del sistema)
             Configuración correcta de las sesiones de Secure Socket Layer

       Object Request Broker (ORB)

             Pasar por valor frente a pasar por referencia (NoLocalCopies)
             com.ibm.CORBA.ServerSocketQueueDepth
             com.ibm.CORBA.MaxOpenConnections y número máximo de conexiones ORB en antememoria
             Tamaño de la agrupación de hebras de Object Request Broker
             Utilización de JNI ReaderManager y ReaderThreads

    Máquinas virtuales Java (JVM)

       Calentamiento de JDK 1.3 HotSpot de Sun en modalidad -server

       Nuevo tamaño de agrupaciones por generaciones de JDK 1.3 HotSpot de Sun

       Compilador JIT (Just In Time)

       Valores del tamaño de almacenamiento dinámico

       Recogida de basura de clase

    La base de datos

       Ubicación de la base de datos

       Tamaño de la agrupación de conexiones de origen de datos de WebSphere

       Tamaño de la antememoria de sentencias preparadas

       DB2

             Utilización de sockets TCP para DB2 en Linux
             MaxAppls de DB2
             MaxAgents de DB2
             Buffpage de DB2
             Nivel de optimización de consultas en DB2
             reorgchk de DB2
             MinCommit de DB2

    Gestión de sesiones

    Escucha de mensajes de WebSphere Application Server Enterprise Extensions

       Número máximo de sesiones

      Varios servidores de aplicaciones realizando escuchas en la misma cola

Referencias adicionales

Procedimientos de las herramientas de rendimiento

       Inicio de Monitor de sistema de Windows NT/2000



Novedades del ajuste del rendimiento

Asistente de ajustador de rendimiento
Antememoria de fragmentos dinámica

Asistente de ajustador de rendimiento

El asistente del ajustador de rendimiento es una herramienta que se incluye en WebSphere Application Server, Advanced Edition que incluye los valores más comunes relacionados con el rendimiento que están asociados con el servidor de aplicaciones. Puede utilizarlo para optimizar los valores de las aplicaciones, los servlets, los enterprise beans, los orígenes de datos y la carga prevista. Los parámetros que pueden establecerse incluyen:

Para invocarlo desde la consola de administración seleccione Consola > Asistentes > Ajustador de rendimiento.

Consulte el artículo 6.6.21 de InfoCenter para obtener más información.

Antememoria de fragmentos dinámica

La antememoria de fragmentos dinámica permite almacenar en la antememoria el resultado de los archivos JSP y los servlets dinámicos y resulta una tecnología que mejora drásticamente el rendimiento de las aplicaciones. Esta antememoria, que trabaja dentro de la JVM de un servidor de aplicaciones, intercepta las llamadas al método service() de un servlet y comprueba si se puede dar servicio a la invocación desde la antememoria en lugar de volver a ejecutar el servlet. Dado que las aplicaciones J2EE presentan un índice de lectura/grabación elevado y pueden tolerar un grado de latencia menor en la actualización de sus datos, la antememoria de fragmentos permite mejorar de modo espectacular el tiempo de respuesta del servidor, su productividad y la escalabilidad.

Después de que se haya ejecutado un servlet (y se haya generado la salida que se almacenará en la antememoria), se generará una entrada en la antememoria con dicha salida. También se producirán los efectos colaterales de la ejecución, esto es, se invocarán otros archivos JSP o servlets, además de metadatos sobre la entrada que incluyen información sobre el tiempo de espera y la prioridad de la entrada. Las entradas únicas se diferencian por una cadena de identificación que se genera desde el objeto HttpServletRequest cada vez que se invoca el servlet. Como resultado, el servlet se almacena en la antememoria en función de los parámetros de petición que ha utilizado el URI para invocar el servlet o de la información sobre la sesión. Dado que WebSphere Application Server compila los archivos JSP en servlets, los JSP y los servlets se utilizan de manera indistinta, excepto cuando se declaran elementos en un archivo XML.

Para establecer esto:

  1. En la consola de administración seleccione el servidor de aplicaciones que desea ajustar.
  2. Pulse Servicios > Servicio del contenedor Web > Editar propiedades.
  3. Seleccione la pestaña Colocación en antememoria de servlet y marque el recuadro Habilitar colocación en antememoria de servlet.
  4. Pulse Aceptar y guarde los cambios.
  5. Reinicie el servidor de aplicaciones.

Consulte el artículo 4.5: Antememoria de fragmentos dinámica de InfoCenter para obtener más información.

Tabla de síntomas

Revise la tabla de síntomas para obtener una rápida visión general del proceso de ajuste. La tabla está diseñada para acceder rápidamente a los síntomas y sirve como un enlace rápido con la información de ajuste relacionada con cada síntoma. La tabla incluye los siguientes tipos de información:

Síntoma Información adicional
El rendimiento y el tiempo de respuesta no son los deseados. Velocidad del procesador
AIX: error de asignación de memoria
Solaris: demasiados archivos abiertos
Descriptores de archivos AIX (ulimit) o Descriptores de archivos Solaris (ulimit)
Solaris: el servidor se atasca durante períodos de mucho trabajo, las respuestas tardan más tiempo, el uso del procesador continúa siendo elevado con toda la actividad de los procesos del sistema y netstat muestra que hay varios sockets abiertos en el puerto 80 cuyo estado es CLOSE_WAIT o FIN_WAIT_2. tcp_close_wait_interval/tcp_time_wait_interval de Solaris y tcp_fin_wait_2_flush_interval de Solaris
Windows NT/2000: netstat muestra que hay demasiados sockets cuyo estado es TIME_WAIT. TcpTimedWaitDelay de Windows NT/2000
HP-UX 11: el rendimiento no es el deseado y la prioridad del servidor de aplicaciones no se ha ajustado. Ajuste de la prioridad del sistema operativo del proceso de WebSphere Application Server
Cuando hay carga de trabajo, las peticiones de los clientes no llegan al servidor Web porque sobrepasan el tiempo de espera o porque se rechazan. Para HP-UX 11 consulte tcp_conn_request_max de HP-UX 11
Para IIS en Windows NT/2000 consulte el Parámetro ListenBackLog
Para IBM HTTP Server en NT, consulte ListenBackLog
Windows NT/2000: el rendimiento de WebSphere Application Server ha disminuido después de que se instalara un servidor de aplicaciones de otro proveedor. Propiedades de los permisos de IIS
Los valores de porcentaje de número máximo que utiliza Resource Analyzer indican que la agrupación de hebras del contenedor Web es demasiado pequeña. Número máximo de conexiones ThreadsMax del contenedor Web
Netstat indica que hay demasiados sockets cuyo estado es TIME_WAIT en el puerto 9080. Número máximo de conexiones activas del transporte del contenedor Web
Hay demasiada actividad de entrada/salida de disco debido a la paginación. Valores del tamaño del almacenamiento dinámico
Los valores de porcentaje de uso que utiliza Resource Analyzer en una agrupación de conexiones de origen de datos indican que el tamaño de la agrupación es demasiado grande. Tamaño de la agrupación de conexiones de origen de datos de WebSphere
Los valores para descartar la antememoria de sentencias preparadas que utiliza Resource Analyzer indican que el tamaño de la antememoria de sentencias preparadas del origen de datos es demasiado pequeña. Tamaño de la antememoria de sentencias preparadas
Hay demasiada actividad de entrada/salida de disco debido a que DB2 está grabando registros cronológicos. MinCommit de DB2
Los valores de porcentaje de número máximo que utilizar Resource Analyzer indican que la agrupación de hebras de Object Request Broker es demasiado pequeña. Colocación en cola y enterprise beans
La JVMPI (Java Virtual Machine Profiler Interface) de Resource Analyzer indica que existe una sobreutilización de objetos cuando se dedica mucho tiempo a la recogida de basura. Detección de la sobreutilización de objetos
Los valores de utilización de memoria de Resource Analyzer indican que falta memoria y Java muestra una excepción de tipo Se ha agotado la memoria. Detección de falta de memoria
El rendimiento, el tiempo de respuesta y la escalabilidad no son los deseados. Si la aplicación lo permite, utilice la antememoria de fragmentos dinámica

Conceptos básicos sobre el ajuste

Se puede realizar una amplia gama de mejoras en WebSphere Application Server si se utilizan los procedimientos que hay disponibles para el ajuste. Esta guía de ajuste le muestra cómo funciona el ajuste, le ofrece las recomendaciones generales y describe los métodos de ajuste específicos. También contiene ideas y sugerencias sobre los diferentes factores y variables que pueden mejorar el ajuste del rendimiento.

Utilice la guía para el ajuste, junto con sus ejemplos y recursos para llevar a cabo fácilmente las tareas de ajuste. El ajuste implica un proceso de aprendizaje continuo. Los resultados pueden ser diferentes de los que se presentan en esta guía.

¿Qué afecta al ajuste?

A continuación se indican todos los componentes que pueden afectar al rendimiento de WebSphere Application Server: Cada uno tiene sus propias opciones de ajuste, de diferente importancia e impacto. Cada uno de los elementos anteriores se describe detalladamente en el apartado Parámetros de rendimiento individuales de este documento.

Para su comodidad, se describen algunos procedimientos para establecer parámetros en otros productos. Dado que estos productos pueden cambiar, considere estos procedimientos como sugerencias.

Tipos de ajustes

Existen dos tipos de ajuste: el ajuste de aplicaciones y el ajuste de parámetros.

Aunque, en ocasiones, el ajuste de aplicaciones ofrece las mayores mejoras de ajuste, este documento se centra en los parámetros de rendimiento individuales y la sinergia existente entre ellos.

El libro blanco WebSphere Application Server Development Best Practices for Performance and Scalability, trata los temas de ajuste de aplicaciones describiendo los mejores métodos de desarrollo de aplicaciones Web que contengan archivos JSP (Java Server Page) y servlets y de aplicaciones de empresa que contengan componentes enterprise beans.

Ajuste de parámetros

Ajustar parámetros es modificar los valores de WebSphere Application Server a fin de mejorar su rendimiento. Los valores que se sugieren en ese documento son directrices generales. Los valores óptimos para su entorno pueden ser totalmente diferentes. Además, recuerde que después de realizar ajustes para solucionar un cuello de botella, se podrá encontrar con otro que no tenga nada que ver. Si es así, es posible que no observe la mejora del rendimiento hasta que haya solucionado ambos cuellos de botella.

Este apartado describe dos tipos de ajuste de parámetros:
Ajuste de parámetros de gran impacto
Estos parámetros producen un alto rendimiento. Son un subconjunto de todos los demás parámetros y tienen un gran impacto en el rendimiento. Dado que estos parámetros dependen de las aplicaciones, los valores de los parámetros adecuados para la aplicación y el entorno pueden diferir.

La tabla siguiente lista los diferentes ajustes de parámetros que pueden generar un alto rendimiento:

Lista de comprobación del rendimiento del conjunto de aplicaciones
Ajuste de colas del sistema WebSphere Application Server
Utilización de pasar por valor frente a pasar por referencia (NoLocalCopies)
Ajuste de los parámetros TCP de Solaris
Ajuste de la memoria de Java
Ajuste de MaxRequestsPerChild: en Linux con IBM HTTP Server
Ajuste del tamaño de la agrupación de conexiones de origen de datos de WebSphere
Ajuste del tamaño de la antememoria de sentencias preparadas
Intervalo de recarga de la configuración del servidor Web
Ajuste del tamaño de la antememoria de sentencias preparadas
Utilización de la antememoria con una sesión persistente
Ajuste de parámetros para evitar anomalías

Los parámetros siguientes ayudan a evitar problemas funcionales:

Parámetro ListenBackLog: se aplica si se ejecuta Windows NT/2000 con IIS y la carga de trabajo de clientes elevada
Tipo de transporte: utilice INET Sockets en Solaris, que es el valor por omisión de WebSphere Application Server
Número de conexiones con DB2: si establece más conexiones de las que DB2 tiene configuradas por omisión
Se ha seleccionado Permitir asignaciones de hebras por encima del número máximo y el sistema tiene una sobrecarga debido a que se han asignado demasiadas hebras
Utilización de sockets TCP para DB2 en Linux: para bases de datos locales
Tamaño de la agrupación de conexiones de origen de datos de WebSphere: compruebe que tiene las conexiones suficientes para manejar las conexiones adicionales que se necesitan para procesar transacciones con los EJB de entidad y para evitar puntos muertos

Ajuste de colas en WebSphere Application Server

WebSphere Application Server tiene una serie de componentes interrelacionados que deben ajustarse de forma equilibrada para dar soporte a los requisitos personalizados de la aplicación e-business completa. Estos ajustes ayudan al sistema a conseguir la máxima productividad mientras se mantiene la estabilidad general del sistema.

Red de colocación en cola

WebSphere Application Server establece una red de colocación en cola, que es una red de colas interconectadas que representan los diversos componentes de la plataforma que da servicio a las aplicaciones. Estas colas incluyen la red, el servidor Web, el contenedor Web, el contenedor EJB, el origen de datos y posiblemente un gestor de conexiones de un sistema de fondo personalizado. Cada uno de estos recursos representa una cola de peticiones que están a la espera de utilizar dicho recurso.

Las colas de WebSphere son recursos que dependen de la carga. El tiempo promedio que se tarda en dar servicio a una petición depende del número de clientes simultáneos.

Colas cerradas frente a colas abiertas

La mayoría de las colas que componen la red de colocación en cola son colas cerradas. A diferencia de una cola abierta, una cola cerrada limita el número máximo de peticiones que puede haber en la cola.

Una cola cerrada permite una gestión estricta de los recursos del sistema. Por ejemplo, el valor de número máximo de conexiones del contenedor Web controla el tamaño de la cola del contenedor Web. Si un servlet promedio que se ejecute en un contenedor Web crea 10 MB de objetos en cada petición, si se establece el valor de número máximo de conexiones en 100 se limitará el consumo de memoria del contenedor Web a 1 GB.

En una cola cerrada, una petición puede estar en uno de estos dos estados: activa o en espera. Una petición activa está trabajando o está a la espera de una respuesta procedente de una cola que se encuentra en sentido descendente. Por ejemplo, una petición activa en el servidor Web está ejecutando un trabajo (como, por ejemplo, recuperando HTML estático) o se encuentra a la espera de que termine una petición en el contenedor Web. Si está en estado de espera, la petición está a la espera de activarse. La petición permanecerá en estado de espera hasta que una de las peticiones activas abandone la cola.

Todos los servidores Web soportados por WebSphere son colas cerradas, al igual que lo son los orígenes de datos de WebSphere Application Server. Los contenedores Web pueden configurarse como colas abiertas o cerradas. En general, es mejor configurarlos como colas cerradas. Los contenedores EJB son colas abiertas; si no se encuentra ninguna hebra disponible en la agrupación, se creará una nueva que se utilizará mientras dure la petición.

Si los servlets llaman a los enterprise beans, el contenedor Web limitará el número de peticiones simultáneas totales de un contenedor EJB porque el contenedor Web también tiene un límite. Esto solamente es cierto si se llama a los enterprise beans desde la hebra del servlet de ejecución. No existe nada que le impida crear hebras y bombardear el contenedor EJB con sus peticiones. Este es uno de los motivos por el que no resulta una buena idea que un servlet cree sus propias hebras de trabajo.

Valores de cola en WebSphere Application Server

A continuación se mencionan los diferentes valores de cola:

Determinación de los valores

El apartado siguiente describe un método para configurar las colas de WebSphere Application Server. Siempre puede cambiar la dinámica del sistema, y, por lo tanto, los parámetros de ajuste se pueden modificar eliminando los recursos que le rodean como, por ejemplo, moviendo el servidor de base de datos a otra máquina, o proporcionando recursos más potentes como, por ejemplo, un grupo más rápido de CPU con más memoria. De este modo, se ajustan los parámetros a una configuración específica del entorno de producción.

Colocación en cola antes de WebSphere

La primera regla del ajuste consiste en minimizar el número de peticiones que hay en las colas de WebSphere Application Server. En general, es mejor que las peticiones esperen en la red, frente al servidor Web, y no que esperen en WebSphere Application Server. Esta configuración permitirá que se pasen a la red de colocación en cola únicamente las peticiones que están listas para ser procesadas. Para llevar a cabo esta configuración, especifique que se amplíe ligeramente el límite ascendente de las colas (el más cercano al cliente) y que el límite descendente de las colas (el más lejano al cliente) vaya disminuyendo progresivamente.

Las colas de esta red de colocación en cola son progresivamente menores a medida que el trabajo fluye en sentido descendente. Cuando llegan 200 clientes al servidor Web, 125 peticiones permanecen en la cola de la red ya que el servidor Web tiene establecido manejar 75 clientes simultáneos. Cuando las 75 peticiones pasan del servidor Web al contenedor Web, 25 permanecerán en cola en el servidor Web y el contenedor Web manejará las 50 restantes. Este proceso seguirá por el origen de datos hasta que 25 usuarios lleguen al destino final, el servidor de base de datos. Ningún componente de este sistema tendrá que esperar a que llegue trabajo porque, en cada punto del flujo en sentido ascendente, hay trabajo en espera de entrar en dicho componente. La mayor parte de las peticiones esperan en la red, fuera de WebSphere Application Server. Esto mejorará la estabilidad porque no habrá ningún componente sobrecargado. Se puede utilizar software de direccionamiento, como IBM Network Dispatcher para direccionar a los usuarios que se encuentran en espera a otros servidores del clúster de WebSphere Application Server.

Cómo dibujar una curva de productividad

Utilizando un caso de prueba que represente todo el espíritu de la aplicación de producción (por ejemplo, ejercita todas las rutas significativas del código) o utilizando la propia aplicación, ejecute un conjunto de experimentos para determinar cuándo se maximizan las funciones del sistema (el punto de saturación). Lleve a cabo esas pruebas después de eliminar de la aplicación la mayoría de los cuellos de botella. El objetivo de estas pruebas suele ser conseguir que las CPU alcancen una utilización cercana al 100%.

Inicie el experimento inicial básico con colas largas. Esto permitirá una concurrencia máxima en todo el sistema. Por ejemplo, inicie el primer experimento con un tamaño de cola de 100 en cada uno de los servidores de la red de colocación en cola: el servidor Web, el contenedor Web y el origen de datos.

A continuación, empiece con una serie de experimentos para trazar una curva de productividad y aumente la carga de usuarios simultáneos tras cada experimento. Por ejemplo, realice experimentos con 1 usuario, 2 usuarios, 5, 10, 25, 50, 100, 150 y 200 usuarios. Tras cada ejecución, registre la productividad (peticiones por segundo) y los tiempos de respuesta (segundos por petición)

La curva resultante de los experimentos básicos debe parecerse a la típica curva de productividad que se muestra en la figura siguiente:

El rendimiento de WebSphere Application Server depende del número de peticiones simultáneas que hay en todo el sistema. La sección A, la zona de carga ligera, muestra que a medida que aumenta el número de peticiones de usuarios simultáneas, aumenta la productividad casi de forma paralela al número de peticiones. Esto demuestra que, con cargas ligeras, las peticiones simultáneas se enfrentan a una congestión muy pequeña en las colas del sistema WebSphere Application Server. En un momento determinado, la congestión empieza a aumentar y la productividad aumenta a una velocidad mucho menor hasta alcanzar el punto de saturación que representa el valor máximo de productividad, determinado por algunos cuellos de botella en el sistema WebSphere Application Server. El tipo de cuello de botella más manejable se produce cuando las CPU de las máquinas de WebSphere Application Server se saturan. Esto es lo ideal porque un cuello de botella de CPU es fácil de remediar, simplemente hay que añadir CPU adicionales o más potentes.

En la zona de carga elevada o sección B, a medida que la carga de clientes simultáneos aumenta, la productividad continúa siendo relativamente constante. Sin embargo, el tiempo de respuesta aumenta proporcionalmente con la carga de usuarios. Es decir, si se dobla la carga de usuarios en la zona de carga elevada, se dobla el tiempo de respuesta. En un punto determinado, representado por la sección C, la zona de caída, uno de los componentes del sistema se agota. En este punto, la productividad empieza a disminuir. Por ejemplo, puede que el sistema entre en la zona de caída cuando las conexiones de red del servidor Web agoten los límites del adaptador de red o si se superan los límites del sistema operativo para manejadores de archivos.

Si el punto de saturación se alcanza cuando la actividad de las CPU del sistema está cercana al 100%, vaya al paso siguiente. Si la CPU no ha alcanzado una actividad del 100%, es probable que exista un cuello de botella agravado por la aplicación. Por ejemplo, es posible que la aplicación esté creando demasiados objetos Java lo que generará cuellos de botella de recogida de basura en Java.

Hay dos formas de gestionar los cuellos de botella de las aplicaciones: suprimir el cuello de botella o clonar el cuello de botella. El mejor modo de gestionar un cuello de botella es suprimirlo. Utilice un perfilador de aplicaciones Java para examinar la utilización general de objetos. Se pueden utilizar perfiladores como, por ejemplo, Performance Trace Data Visualizer (PTDV), JProbe y Jinsight.

Ajustes de cola

El número de usuarios simultáneos que hay en el punto de saturación representa la concurrencia máxima de la aplicación. Por ejemplo, si la aplicación ha saturado WebSphere Application Server con 50 usuarios, puede que 48 usuarios le ofrezca la mejor combinación de productividad y de tiempo de respuesta. Este valor se denomina valor de Concurrencia de aplicaciones máxima. La concurrencia de aplicaciones máxima pasa a ser el valor que se debe utilizar como base para ajustar las colas del sistema WebSphere Application Server. Recuerde que lo ideal es que la mayor parte de los usuarios esperen en la red, por lo tanto, disminuya los tamaños de las colas a la vez que aleja el flujo en sentido descendente con respecto al cliente. Por ejemplo, si el valor de Concurrencia de aplicaciones máxima es 48, comience por colas de sistema con los valores siguientes: servidor Web 75, contenedor Web 50 y origen de datos 45. Lleve a cabo una serie de experimentos adicionales ajustando estos valores elevándolos o bajándolos ligeramente para encontrar aquéllos que sean mejores.

Se puede utilizar Resource Analyzer para determinar el número de usuarios simultáneos mediante los valores de hebras activas simultáneas de la agrupación de hebras del motor de servlets.

En experimentos de rendimiento realizados, la productividad aumentó en un 10-15% cuando se ajustó el número máximo de conexiones activas del transporte del contenedor Web de modo que coincidiera con el número máximo de hebras del contenedor Web.

Ajuste de los valores de cola para patrones de acceso

En muchos casos, sólo una parte de las peticiones que pasan por una cola entra en la siguiente cola de sentido descendente. En un sitio con muchas páginas estáticas, el servidor Web da servicio a muchas peticiones y éstas no se pasan al contenedor Web. En estas circunstancias, el tamaño de la cola del servidor Web puede ser bastante mayor que el de la cola del contenedor Web. En el apartado anterior, la cola del servidor Web se había establecido en 75 en lugar de estar algo más cerca del valor de Concurrencia de aplicaciones máxima. Se deben realizar ajustes similares cuando los componentes diferentes presentan tiempos de ejecución diferentes.

Por ejemplo, en una aplicación que emplea el 90% de su tiempo en un servlet complejo y sólo el 10% en realizar una consulta JDBC breve, como promedio, sólo el 10% de los servlets estarán utilizando las conexiones de base de datos en un momento determinado, de modo que el tamaño de la cola de conexiones de base de datos puede ser bastante menor que el de la cola del contenedor Web. Por el contrario, si la mayor parte del tiempo de ejecución del servlet se emplea en realizar una consulta compleja a una base de datos, puede aumentar los valores de cola tanto del contenedor Web como del origen de datos. Supervise siempre la utilización de la CPU y de la memoria tanto para WebSphere Application Server como para los servidores de base de datos para asegurarse de que no está saturando ni la CPU ni la memoria.

Colocación en cola y enterprise beans

Las invocaciones de métodos de enterprise beans se colocan en cola únicamente si el cliente que está llamando al método es remoto. Por ejemplo, si el cliente EJB está ejecutándose en una Máquina Virtual Java distinta (que está en otro espacio de dirección) de la del enterprise bean. Por otro lado, si el cliente EJB (ya sea un servlet u otro enterprise bean) está instalado en la misma JVM, el método EJB se ejecutará en la misma hebra de ejecución que el cliente EJB y no se colocará en cola.

Los enterprise beans remotos se comunican a través del protocolo RMI/IIOP. Un ORB de servidor procesa las invocaciones de métodos que se inician mediante RMI/IIOP. La agrupación de hebras actúa como una cola para las peticiones de entrada. Sin embargo, si se emite una petición de método remota y no hay más hebras disponibles en la agrupación de hebras, se creará una hebra nueva. Una vez finalizada la petición de método, la hebra se destruye. Por lo tanto, cuando se utiliza el ORB para procesar las peticiones de método remotas, el contenedor EJB es una cola abierta, puesto que su uso de hebras es ilimitado. La siguiente ilustración muestra las dos opciones de colocación en cola de enterprise beans.

Cuando se configura la agrupación de hebras, es importante comprender los patrones de llamada del cliente EJB. Si un servlet realiza un pequeño número de llamadas a enterprise beans remotos y cada llamada a método es relativamente rápida, puede establecer el número de hebras de la agrupación de hebras de ORB en un valor menor que el del tamaño de la agrupación de hebras del contenedor Web.

Resource Analyzer muestra un valor que se denomina porcentaje de número máximo, que se utiliza para determinar durante cuánto tiempo se han estado utilizando todas las hebras configuradas. Si este valor se muestra constantemente con dos dígitos, entonces probablemente ORB sea la causa del cuello de botella y deberá aumentarse el número de hebras.

El grado en que debe aumentar el valor de la agrupación de hebras de ORB estará en función del número de servlets simultáneos (es decir, de clientes) que llaman a los enterprise beans y de la duración de cada llamada a método. Si las llamadas a métodos son más largas, puede establecer el tamaño de la agrupación de hebras de ORB en el mismo valor que el tamaño del contenedor Web ya que de este modo, las llamadas a métodos remotas no se intercalarán tanto. Si el servlet sólo realiza llamadas breves o rápidas al ORB, el tamaño de la agrupación de hebras de ORB puede ser pequeño. Potencialmente, varios servlets pueden reutilizar la misma hebra de ORB. En este caso, la agrupación de hebras de ORB puede ser pequeña, incluso la mitad que el valor del tamaño de la agrupación de hebras del contenedor Web. Si la aplicación pasa mucho tiempo en ORB, configure otra relación más igualada entre el contenedor Web y ORB.

Colocación en cola y creación de clústeres

Las funciones de clonación de servidores de aplicaciones pueden ser de gran ayuda para configurar entornos de producción altamente escalables. Esto resulta especialmente cierto cuando la aplicación sufre cuellos de botella que impiden que se utilice toda la CPU de los SMP (Servidores de multiprocesos simétricos). Cuando se ajustan las colas del sistema WebSphere Application Server en configuraciones de clúster, recuerde que cuando se añade un servidor a un clúster, el flujo en sentido descendente del servidor recibe el doble de carga.

Existen dos clones del contenedor Web entre un servidor Web y un origen de datos. Se presupone que el servidor Web, los motores de servlets y el origen de datos (pero no la base de datos) se están ejecutando en un solo servidor SMP. Dadas estas restricciones, se deben tener en cuenta las siguientes consideraciones sobre la cola:

Ajuste de Secure Socket Layer

Los dos tipos de rendimiento de Secure Socket Layer (SSL) son los siguientes:

Visión general del inicio de comunicación (handshake) y del cifrado/descifrado masivo

Cuando se establece una conexión SSL, se produce un inicio de comunicación SSL. Una vez realizada la conexión, SSL realiza un cifrado y descifrado masivo de cada lectura y grabación. El inicio de comunicación SSL tiene un coste de rendimiento mucho mayor que el cifrado y descifrado masivo.

Cómo mejorar el rendimiento de SSL

Para mejorar el rendimiento de SSL, debe disminuirse el número de conexiones SSL individuales y de inicios de comunicación.

Si se disminuye el número de conexiones se aumenta el rendimiento de las comunicaciones protegidas mediante conexiones SSL y también de las comunicaciones no protegidas mediante conexiones TCP sencillas. Un modo de disminuir el número de conexiones SSL individuales es utilizar un navegador que dé soporte a HTTP 1.1. Si no se actualizan a HTTP 1.1, los usuarios no podrán disminuir el número de conexiones SSL individuales.

Es más común disminuir el número de conexiones (tanto TCP como SSL) entre dos componentes de WebSphere Application Server. Las directrices siguientes le ayudarán a asegurarse de que el transporte HTTP del servidor de aplicaciones se ha configurado de modo que el plug-in del servidor Web no vuelva a abrir reiteradamente conexiones nuevas con el servidor de aplicaciones:

Tamaño de la antememoria de sentencias preparadas

Otros parámetros JDBC
Además de establecer el tamaño de la antememoria de sentencias preparadas, puede establecer otras propiedades específicas de los controladores JDBC. Por ejemplo, si utiliza Oracle, puede aumentar el número de filas que se han de recuperar mientras se obtienen grupos de resultados con la sentencia siguiente:
name="defaultRowPrefetch", value="25"
Entre estos tipos de propiedades de personalizadas en la pestaña General de la base de datos.

DB2

DB2 tiene muchos parámetros que se pueden configurar para optimizar el rendimiento de la base de datos. Para obtener información completa sobre el ajuste de DB2, consulte el manual DB2 UDB Administration Guide: Performance.
Utilización de sockets TCP para DB2 en Linux
MaxAppls de DB2
MaxAgents de DB2
Buffpage de DB2
Nivel de optimización de consultas en DB2
reorgchk de DB2
MinCommit de DB2

Gestión de sesiones

Para obtener información adicional sobre cómo establecer los parámetros de gestión de sesiones, consulte el artículo 4.4.1.1 Modelo y entorno de programación de sesiones de InfoCenter.

Escucha de mensajes de WebSphere Application Server Enterprise Extensions

WebSphere Application Server Enterprise Extensions proporciona soporte para Extended Messaging Support. Este apartado contiene sugerencias de ajuste para la función JMS Listener que forma parte de Extended Messaging Support.

Número máximo de sesiones

Varios servidores de aplicaciones realizando escuchas en la misma cola

Referencias adicionales

Procedimientos de las herramientas de rendimiento

Inicio de Monitor de sistema de Windows NT/2000

Siga los siguientes pasos:
En el menú Inicio seleccione Programas > Herramientas administrativas > Monitor de sistema