Какие шаги могут быть приняты для оптимизации JMS TIBCO, чтобы быть более исполнителем?

StackOverflow https://stackoverflow.com/questions/5006886

Вопрос

Мы используем высокую пропускную способность, которая использует JMS Tibco-EMS для прохождения большого количества сообщений на наш основной сервер к нашим клиентским соединениям.Мы сделали некоторую статистику и определили, что JMS вызывает большую задержку.Как мы можем сделать TIBCO JMS более исполнителю?Есть ли ресурсы, которые дают хорошее обсуждение этой темы.

Это было полезно?

Решение

Использование непостоянных сообщений - это один вариант, если вам не нужно постоянство. Обратите внимание, что даже если вам нужна настойчивость, иногда лучше использовать не настойчивые сообщения, и в случае аварии выполняют другое действие восстановления (например, отправлять все сообщения)

Это актуально, если:

    .
  • аварии редки (как восстановление требует времени)
  • Вы можете легко обнаружить сбой
  • Вы можете обрабатывать дублирующие сообщения (вы можете не знать точно, какие сообщения были доставлены до аварии

    EMS также предоставляет некоторые механизмы, которые являются настойчивыми, но менее доказательством пули, затем классическая гарантированная доставка К ним относятся:

      .
    • вместо "именно однажды" Доставка сообщения Вы можете использовать «хотя бы один раз» или «до одного» доставки.
    • Вы можете использовать механизм предварительного извлечения, который заставляет клиента извлечь сообщения к памяти до вашего приложения.

Другие советы

EMS не должен быть бутылкой шеи. Я сделал тестирование, и мы получили дерьму пропускной способностью на нашем сервере.

Вам нужно попытаться определить, где есть шея бутылки. Это проблема в производителе сообщения или потребителя. Сообщения накапливаются на очередь.

Какой тип сценария вы делаете.

PUB / SUP или запрос Ответить? Вы накапливаете временную очередь. Слишком много временных очередей могут вызвать проблемы с производительностью. (В основном, когда они задерживаются, потому что вы не закроете что-то правильно)

Вы публикуетесь на тему с прочными абонентами, если так. Попробуйте соединить тему в очередь и чтение от тех. Прочные подписчики могут привести к тому, что он также может привести к производительности немного икота, так как он должен отслеживать, у кого есть копии всех сообщений.

Убедитесь, что ваш процесс отправки имеет один сеанс и несколько вызовов через этот сеанс. Не открывайте полную сессию для каждой операции. Повторно использовать, где это возможно. Сделайте то же самое для потребителя.

Убедитесь, что вы закрываете, когда вы закончите. EMS не проясняет вещи. Поэтому, если вы делаете соединение и просто закройте свое приложение, соединение все еще есть и всасывает ресурсы.

Просмотрите вашу толерантность для потерянных сообщений даже в аварии. Если вы занимаетесь клиентом ACK, и не имеет значения, если вы побиваете обработку сообщения, затем переключитесь на AUTO. Также я верю, если вы используете (TEMS - TIBCO EMS для WCF) есть проблема с признанием сессии. Таким образом, сообщение только тогда, когда его обработано на всем сообщении, мы переключились с клиента ACK в тот, который имел DUPS OK, и он работал лучше)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top