[z/OS]

Valores de regulador MDB para los beans controlados por mensajes en z/OS

Puede ajustar varios valores del "regulador MDB" para controlar la cantidad de trabajo MDB que el servidor procesa en un determinado momento.

Los siguientes problemas afectan a la elección de los valores de regulador MDB:

Regulador MDB - umbrales alto y bajo

Nota: En este tema se supone que está correlacionando un puerto de escucha individual con un destino determinado. Aunque los valores del umbral del regulador se calculan individualmente para cada puerto de escucha, únicamente existe una hebra del agente de cola para cada destino independientemente del número de puertos de escucha. Por ejemplo, cuando los puertos de escucha A y B se correlacionan con la cola Q, si el puerto de escucha B alcanza el umbral bajo, libera el regulador en la hebra del agente de cola individual para la cola Q, a pesar de que es posible que el puerto de escucha A haya alcanzado su umbral alto (y, por lo tanto, esté bloqueando si se han correlacionado los puertos de escucha con destino diferentes). Más específicamente, no puede correlacionar varios puertos de escucha con un solo destino y establecer un umbral alto de 1 en cada puerto de escucha, si desea realizar un proceso en serie en los beans controlados por mensajes de cada puerto de escucha. Debido a esta restricción, se le recomienda encarecidamente que únicamente correlacione un puerto de escucha individual con cada destino.

El soporte de regulador MDB mantiene el recuento del número actual de mensajes en proceso para cada puerto de escucha.

Cuando una referencia de mensaje se envía al MRH, el recuento en proceso se incrementa en 1. A continuación, el recuento en proceso se compara con el valor de umbral alto para este puerto de escucha.
  • Si el recuento en proceso es menor o igual al valor del umbral alto, un registro de trabajo se coloca en la cola WLM.
  • Si el recuento en proceso excede el valor de umbral alto, la hebra de agente colas que ejecuta el MRH se bloquea, entrando en un estado de espera. Es decir, el regulador se está "bloqueando".

El recuento en proceso se reduce en 1 siempre que se informa al controlador que se ha completado un registro de trabajo para este puerto de escucha (tanto si la transacción de aplicación se ha comprometido como si no lo ha hecho). Después de que se reduzca, el recuento en proceso se contrasta con el valor de umbral bajo de este puerto de escucha. Si el recuento en proceso se reduce hasta alcanzar el valor de umbral bajo, la hebra de agente de colas bloqueada previamente se activa de nuevo (recibe la notificación). En este punto, se pueden poner en la cola WLM los registros de trabajo nuevos. Es decir, el regulador se ha "liberado".

Los valores de umbral alto y umbral bajo se establecen externamente mediante un valor, el parámetro Número máximo de sesiones del puerto de escucha. El valor de umbral alto se establece internamente en un valor igual a Número máximo de sesiones, definido externamente. El valor de umbral bajo se calcula y establece internamente mediante la fórmula: umbral bajo = (umbral alto / 2), con el valor redondeándose por lo bajo al entero más próximo.

Como ejemplo, supongamos que el parámetro Número máximo de sesiones se ha establecido en 2, siendo el umbral superior 2 y el umbral inferior 1. He aquí un resumen del proceso:
  • El controlador empieza a procesar otro mensaje, el recuento en proceso se establece en 3, lo que excede el umbral superior y hace que la hebra del controlador se detenga hasta que se alcance el umbral inferior.
  • Se devuelve el MDB (bean controlado por mensaje) en el sirviente del primer mensaje y el recuento en curso desciende de 3 a 2; por lo tanto, NO se ha alcanzado el umbral inferior.
  • Se devuelve el MDB en el sirviente del segundo mensaje y el recuento en curso desciende de 2 a 1. Se alcanza el umbral inferior y continúa el proceso de mensajes y su asignación a la SR.
Si se utiliza el valor 2 en el parámetro Número máximo de sesiones significa que una vez se excede el umbral superior en el controlador, no se procesarán más mensajes hasta que se hayan completado todos los MDB en el sirviente.

No obstante, si el servicio de escucha de mensajes se ha configurado con la propiedad personalizada de MDB.THROTTLE.THRESHOLD.LOW.EQUALS.HIGH definida y establecida en un valor de "true", el valor de umbral bajo se establece internamente en el valor de umbral alto (que es la propiedad Número máximo de sesiones, establecida externamente, del puerto de escucha).

Nota: La hebra de gestor de colas se establece para cada destino, en lugar de para cada puerto de escucha. Por lo tanto, si dos puertos de escucha se correlacionan en la misma cola, una condición de bloqueo de regulador en un puerto de escucha también produce un bloqueo de la colocación en cola de los registros de trabajo del segundo puerto de escucha. El segundo puerto de escucha se bloquea incluso si no ha alcanzado el valor de umbral alto. Para simplificar, no comparta un destino entre más de un puerto de escucha.

Regulador MDB - ajuste

Debe establecer el valor "Número máximo de sesiones" del puerto de escucha en el doble del número de hebras de trabajo disponibles en todos los sirvientes del servidor escalable (2*WT) para que, si tiene una hebra de trabajo disponible en algún sirviente, no dejarla desocupada debido a un regulador MDB bloqueado. Es decir, no es deseable tener un cola WLM vacía, un hebra de trabajo de sirviente disponible y un regulador bloqueado.

Con la recomendación básica de utilizar el valor 2*WT, un regulador bloqueado se libera en el momento en el que las siguientes condiciones son verdad:
  • Existe una hebra de trabajo de sirviente libre
  • No hay nada en la cola WLM
  • Existe una referencia de mensaje que se ha examinado pero para la cual no se ha añadido una solicitud de trabajo a la cola WLM (el regulador se ha bloqueado en su lugar)

Asimismo, si se establece el valor de umbral alto en 2*(WT+N), puede garantizar que, en el momento de que una hebra de trabajo de sirviente se libera y libera al regulador, existe un registro de reserva de N mensajes procesados previamente y pendientes en la cola WLM listos para su asignación. Sin embargo, si se establece un valor muy alto se producirá el problema de sobrecarga de cola WLM que se quería evitar mediante la utilización del regulador. Tenga en cuenta que este escenario supone que la cola (o el tema) está totalmente cargada con mensajes que se deben procesar.

Por consiguiente, el incremento del valor de umbral alto permite que el servidor cree un pequeño registro de reserva de mensajes procesados previamente que están en la cola WLM si se produce un pico de carga de trabajo. Sin embargo, si se incrementa el valor de umbral alto también se aumentan las posibilidades de que un registro de trabajo de un determinado mensaje exceda el tiempo de espera de que la aplicación se pueda asignar con el mensaje proporcionado. Es decir, es posible que el servidor alcance el Límite de tiempo de espera de MDB. El final el mensaje específico se vuelve a enviar al servidor, pero sólo más tarde y el proceso realizado hasta ese momento se echa a perder. Asimismo, un valor de umbral muy alto omitiría eficazmente la función del regulador MDB, en cuyo caso la cola WLM podría sobrecargarse y se generaría un error en el servidor.

Regulador MDB - ajuste alternativo

Aunque el servidor escalable se ha diseñado con el objetivo de maximizar el rendimiento, es posible utilizar los valores de puerto para lograr otros objetivos de la gestión de carga de trabajo.

Por ejemplo, un valor de umbral alto de ‘1' garantiza que los mensajes se procesen en el orden en que se reciben en el destino.

Pueden darse otras razones empresariales, basadas en la capacidad u otros factores, para limitar un determinado puerto de escucha a mucha menos simultaneidad que a la que el servidor daría soporte de otro modo. Aunque se trata ciertamente de una configuración soportada, ésta puede hacer que el regulador se bloquee cuando haya hebras de trabajo desocupadas disponibles.

Ejemplo de regulador MDB

Suponga que el servidor está configurado con el valor de número máximo de instancias de servidor establecido en 3 y con el perfil de carga de trabajo de IOBOUND. Dispone de dos CPU y, por lo tanto, WebSphere Application Server creará seis hebras de trabajo por sirviente. La aplicación (un único MDB correlacionado con una cola) maneja todos los mensajes con relativa rapidez (así que hay menos riesgo de tiempo de caducidad excedido) y se desea que el tiempo total desde la llegada de un determinado mensaje a la cola MDB hasta el final de la asignación MDB de este mensaje sea lo más pequeña posible.

Para proporcionar un tiempo de respuesta rápido a una avalancha de trabajo, debe optar por un registro de reserva más grande. Decide establecer el valor de número máximo de sesiones de puerto de escucha en 100 = 2 * (3 * 6 + 32).

Nota: Cualquier valor que sea mayor o igual que 36 = 2 * 3 * 6 mantendrá a todas las hebras de trabajo de sirviente ocupadas. En la práctica, no es decisivo elegir el mejor "factor de registro de reserva" posible, es suficiente realizar una buena estimación y, a continuación, redondearla en exceso a un valor aproximado conveniente. Por ejemplo, en este caso puede elegir un valor de 100.

Icon that indicates the type of topic Concept topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cprf_tunezmdb_throttle
File name: cprf_tunezmdb_throttle.html