【问题标题】:Tika in server mode performanceTika 在服务器模式下的性能
【发布时间】:2014-07-23 16:38:30
【问题描述】:

我阅读了一些关于服务器模式下的 tika 提高性能的文章。有人可以解释一下吗?我们能否在我们的 Java 应用程序中实现类似的功能以获得更好的性能?

Running tika in server mode

【问题讨论】:

  • 我的问题不是关于“如何使用服务器模式”,而是如何通过正常的 API 调用获得同样的性能提升。
  • 那么@vadchen 有你的答案。一如既往:“使用源代码,卢克”。

标签: java apache-tika


【解决方案1】:

在您提供的示例中,当 tika 使用 jar 作为独立应用程序执行时,在实际处理 pdf 文件之前执行了额外的步骤。大致可以拆分为3:

  1. JVM 已实例化
  2. 已加载和配置 Tika 类(例如:解析器等...)
  3. (然后)tika 执行内容处理

在服务器模式下,前两个步骤在服务器启动时执行,它准备好在收到文件时处理文件。

如果应用程序对输入数据执行一些处理并且处理时间明显少于实例化和配置应用程序,您可以在应用程序中执行相同的操作。

至于实现你可以看看 tika source code

【讨论】:

  • 感谢您的信息。如果我看到任何改进,我会尝试并分享代码
  • 我在代码中观察到的唯一一件事是 Parser 对象被初始化。我尝试了同样的事情,但没有观察到任何性能改进。有cmets吗?
  • @sidgate,看org.apache.tika.cli.TikaCLI.TikaServer类,它负责服务端模式
  • 是的,我查看了代码,如前所述,似乎只有 Parser 对象被初始化。其他 Socket 相关代码这里不需要。我只尝试了一次初始化 Parser 的代码,但没有看到任何改进(用于提取 100 个文件的内容)。因此,根据您的回答 1. JVM 初始化不是正在运行的应用程序的问题;无论如何它只会发生一次。 2、Tika初始化Parser对象,看起来对性能影响不大。所以我怀疑我会得到任何性能改进。
【解决方案2】:

我查看了 TikaServer 中的代码,似乎只有 Parser 对象被初始化。其他 Socket 相关代码这里不需要。我只尝试了一次初始化 Parser 的代码,但没有看到任何改进(用于提取 100 个文件的内容)。

所以根据vadchen的回答

  1. JVM 初始化不是正在运行的应用程序的问题;无论如何它只会发生一次。
  2. Tika 初始化 Parser 对象,这似乎对性能没有太大影响。

因此没有文章声称的任何性能改进。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多