Как я могу повысить производительность пакетного приложения на основе MQ?

У меня есть приложение, в котором сообщения продолжают поступать со скоростью 70К XML в час. Мы потребляем эти XML-сообщения и сохраняем их в промежуточной очереди. Промежуточная очередь создается, потому что нам нужно выполнить SLA по потреблению всех сообщений за 24 часа. Мы можем использовать и загрузить XMLS во внутреннюю очередь в течение 24 часов. После загрузки во внутреннюю очередь мы обрабатываем XMLS (анализируем, применяем очень мало преобразований, выполняем очень мало проверок) и сохраняем данные в сильно нормализованной модели данных. Я знаю, что модель данных может иметь огромное влияние на производительность, к сожалению, мы не можем контролировать модель данных. Сейчас на обработку 2К сообщений уходит 3,5 минуты, что недопустимо. Мы хотим сократить его до 1 минуты для 2К сообщений. Вот что мы уже сделали:

1) Применяли индексы везде, где это возможно.
2) Используйте XMLBeans для анализа XML (размер каждого XML не очень велик)
3) Удалены все ненужные проверки, преобразования и т. Д.

Приложение работает на:
Операционная система: RHEL 5.4 64 бит
Платформа: JDK 1.6.0_17, 64 бит
База данных: Oracle 11g R2 64 бит (кластер с 2 узлами)
Внешний MQ: очередь IBM
Внутреннее временное хранилище MQ: JBoss MQ
Сервер приложений: Jboss 5.1.0.GA (версия EAP)

Порядок, в котором мы потребляем и обрабатываем XML-сообщения, очень важен, и поэтому мы не можем выполнять параллельную обработку.

Что еще мы можем сделать для повысить производительность?

5
задан T.Rob 3 June 2011 в 14:36
поделиться