【发布时间】:2011-09-07 20:37:41
【问题描述】:
我有一个应用程序,其中消息以每小时 70K XML 的速度持续发送。我们使用这些 XML 消息并将其存储到中间队列中。创建中间队列是因为我们需要满足 24 小时消费所有消息的 SLA。我们能够在 24 小时内使用 XMLS 并将其加载到内部队列中。将其加载到内部队列后,我们处理 XMLS(解析、应用很少的转换、执行很少的验证)并将数据存储到高度规范化的数据模型中。我知道数据模型会对性能产生巨大影响,不幸的是,我们无法控制数据模型。目前,我们需要 3.5 分钟来处理 2K 条消息,这是不可接受的。我们希望将 2K 消息的时间缩短到 1 分钟。以下是我们迄今为止所做的:
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 消息的顺序非常重要,因此我们不能进行并行处理。
我们还能做些什么来提高性能?
【问题讨论】:
标签: xml performance jboss ibm-mq mq