Nic*_*zza 9 java apache-tika kubernetes tika-server
我正在尝试 Tika 解析数以百万计的办公文档。Pdfs、docs、excels、xmls 等。种类繁多。
吞吐量非常重要。我需要能够在合理的时间内解析这些文件,但与此同时,准确性也非常重要。我希望解析失败的文档少于 10%。(失败我的意思是由于 tika 稳定性而失败,比如解析时超时。我不是说由于文档本身而失败)。
我的问题 - 如何在容器化环境中配置 Tika Server 以最大化吞吐量?
我的环境:
在每个 pod 上,我运行一个 java 程序,其中有 8 个解析线程。
每个线程:
-s -spawnChild -maxChildStartupMillis 120000 -pingPulseMillis 500 -pingTimeoutMillis 30000 -taskPulseMillis 500 -taskTimeoutMillis 120000 -JXmx512m -enableUnsecureFeatures -enableFileUrl这些文件中的每一个都存储在 Pod 本地的缓冲区中,因此使用本地文件优化:
它使用的 Tika Web 服务是:
Endpoint: `/rmeta/text`
Method: `PUT`
Headers:
- writeLimit = 32000000
- maxEmbeddedResources = 0
- fileUrl = file:///path/to/file
Run Code Online (Sandbox Code Playgroud)
文件不大于 100Mb,tika 文本的最大字节数将为 (writeLimit) 32Mb。
每个 pod 每天解析大约 370,000 个文档。我在设置方面进行了大量不同的尝试。
我之前尝试使用实际的 Tika “ForkParser”,但性能远不如生成 tika 服务器。所以这就是我使用 Tika Server 的原因。
我不讨厌这样的性能结果......但我觉得我最好伸出援手并确保没有人在那里检查我的数字并且就像“哇,这太糟糕的表现,你应该像我一样得到 xyz!”
有没有人有你在做的类似的事情?如果是这样,您最终选择了哪些设置?
另外,我想知道当我调用我的 Tika 服务器/rmeta/text端点时,Apache Http 客户端是否会导致任何开销。我正在使用共享连接池。为每个线程使用唯一的 HttpClients.createDefault() 而不是在线程之间共享连接池有什么好处吗?
| 归档时间: |
|
| 查看次数: |
257 次 |
| 最近记录: |