【问题标题】:What can we do to make XML processing faster?我们可以做些什么来加快 XML 处理速度?
【发布时间】:2011-01-29 13:56:18
【问题描述】:

我们在一个内部公司系统上工作,该系统将 Web 前端作为其界面之一。

前端(Java + Tomcat + Apache)通过 SOAP Web 服务与后端(用类似 COBOL 的语言编写的专有系统)进行通信。

因此,我们来回传递大型 XML 文件。

我们认为,由于 XML 传输和解析的大量开销,这种架构对性能有重大影响。不幸的是,我们被这种架构卡住了。

我们如何才能使这种 XML 设置更有效?

非常感谢任何提示或技术。

【问题讨论】:

  • ximpleware.com(vtd-xml.sf.net 页面)包含根据谷歌的恶意软件,我会小心这些链接,可能是一个受损的 wordpress 安装

标签: java xml performance web-services parsing


【解决方案1】:

分析!

对负载下的系统进行一些适当的分析 - 这里没有足够的信息。

您需要弄清楚时间在哪里以及瓶颈在哪里(网络带宽、cpu、内存等......)。只有这样你才会知道该怎么做——许多优化实际上只是权衡取舍(例如缓存会牺牲内存来提高其他地方的性能)

我能想到的唯一一件事是确保您在 Web 服务中使用 HTTP 压缩 - XML 通常可以压缩到其正常大小的一小部分,但同样只有当您有空闲的 CPU 周期。

【讨论】:

  • +1 表示明智的做法。当您不知道处理时间的去向时,优化没有多大意义。
【解决方案2】:

如果两端都支持,你可以压缩传输,你可以尝试不同的解析器,但是既然你说的是SOAP,那就没有太多选择了。无论如何,SOAP 是臃肿的。

【讨论】:

    【解决方案3】:

    如果您认为这是由于带宽问题,我将在这里提出建议,建议 GZIP 压缩。 (您提到了 XML 传输)是的,这会增加您的 CPU 时间,但它可能会加快传输速度。

    Here's the first Google hit on GZIP Compression 作为起点。它描述了它是如何在 Apache 上工作的。

    【讨论】:

      【解决方案4】:

      首先确保您的解析方法对大型文档有效。 StAX 是解析大型文档的好工具。

      此外,您可以查看binary XML 方法。这些提供更有效的传输,但也尝试帮助解析。

      【讨论】:

      【解决方案5】:

      试试 StAX。它执行well 并且语法简洁。

      【讨论】:

        【解决方案6】:

        检查您的应用程序是否将整个 XML 文档作为 DOM 树读取。这些可能会变得非常大,通常您可以使用简单的 SAX 事件检查或基于 SAX 的 XSLT 程序(可以编译为快速处理)来完成。

        这在像 Sun Java 6 JDK 中的 visualvm 这样的分析器中非常明显

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-01-18
          • 2014-09-12
          • 1970-01-01
          • 1970-01-01
          • 2011-06-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多