Pregunta

Estamos ejecutando un sistema de alto rendimiento que utiliza TIBCO-EMS JMS para pasar un gran número de mensajes desde y hacia nuestro servidor principal a nuestras conexiones de cliente.Hemos hecho algunas estadísticas y hemos determinado que JMS es la causa de mucha latencia.¿Cómo podemos hacer que Tibco JMS sea más actor?¿Hay algún recurso que le dé una buena discusión sobre este tema?

¿Fue útil?

Solución

El uso de mensajes no persistentes es una opción si no necesita persistencia. Tenga en cuenta que incluso si necesita persistencia, a veces es mejor usar mensajes no persistentes, y en caso de que realice un choque realice una acción de recuperación diferente (como reenviar todos los mensajes)

Esto es relevante si:

  • Los choques son raros (ya que la recuperación lleva tiempo)
  • puedes detectar fácilmente un accidente
  • Puede manejar mensajes duplicados (es posible que no sepa exactamente qué mensajes se entregaron antes del accidente

    EMS también proporciona algunos mecanismos que son persistentes, pero menos pruebas de balas, entonces la entrega clásica garantizada Estos incluyen:

    • En lugar de "exactamente una vez", la entrega de mensajes puede usar la entrega "al menos una vez" o "hasta una vez".
    • Puede usar el mecanismo previo a Fetch, lo que hace que el cliente obtenga mensajes a la memoria antes de que su solicitud lo solicite.

Otros consejos

EMS no debe ser el cuello de la botella. He hecho la prueba y hemos obtenido una carga de rendimiento en nuestro servidor.

Necesitas intentar determinar dónde está el cuello de la botella. Es el problema en el productor del mensaje o al consumidor. Son mensajes que se acumulan en la cola.

¿Qué tipo de escenario estás haciendo?

pub / sup o solicitar respuesta? ¿Estás teniendo una cola temporal acumulada? Demasiadas colas temporales pueden causar problemas de rendimiento. (En su mayoría cuando se demoran porque no cerró algo correctamente)

¿Está publicando un tema con suscriptores duraderos si es así? Intente salvar el tema para hacer cola y leer de aquellos. Los suscriptores duraderos pueden causar un poco de HICCUP en el rendimiento, ya que necesita rastrear quién tiene copias de todos los mensajes.

Asegúrese de que su proceso de envío tenga una sesión y múltiples llamadas a través de esa sesión. No abra una sesión completa para cada operación. Reutilizar donde sea posible. Haz lo mismo para el consumidor.

Asegúrese de cerrar cuando haya terminado. EMS no despeja las cosas. Por lo tanto, si realiza una conexión y simplemente cierre su aplicación, la conexión aún está allí y chupa los recursos.

Revise su tolerancia a los mensajes perdidos en el incluso de un accidente. Si está haciendo ack de cliente y no importa si bloquee el procesamiento del mensaje y luego cambie a AUTO. También creo que si está utilizando (TEMS - TIBCO EMS para WCF), hay un problema con el reconocimiento de la sesión. Por lo tanto, un mensaje es solo cuando se procesa en todo el mensaje, cambiamos del cliente ACK a la que había engañado a DUPS OK y funcionó mejor)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top