我正在使用 ManifoldCF 帮助将文档索引到 Solr。Solr 配置为云模式,具有一个节点/核心和一个外部 ZooKeeper(与运行 Solr 的机器在同一台机器上)。ManifoldCF 从本地硬盘读取文件(约 2300 个,总大小 2.4GB)。两个系统都在使用 SUSE Enterprise 和 HotSpot JVM 的 VM 中运行。运行 Solr 的机器已设置为 2.5 GB,其中 Solr 最多可使用 2 GB。运行 Manifold 的另一台机器当前设置为 8GB。我使用以下命令(以 root 身份)调用 Manifold:
java -Xmx7168m -jar manifoldcf/example/start.jar
索引过程运行顺利,除了当 Manifold 内存不足并开始抛出 OutOfMemoryExceptions 并崩溃时突然停止。
除了设置 Solr 中使用的 Tika-Parser 以忽略异常之外,我没有更改 Manifold 的配置中的任何内容,因为当扫描具有未知/不同格式的文档时,这些异常会中断索引过程。
我已经尝试使用 OpenJDK 以及改用 Ubuntu,但这并没有真正改变任何东西。使用更多或更少的内存(以及更改 java 内存参数)也会导致同样的问题。我还查看了垃圾收集(使用 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+HeapDumpOnOutOfMemoryError -Xloggc:/root/Documents/gc.log),结果可用这里。使用(更少)文档,索引过程完成,但内存使用率仍然很高,并且在索引第二批文档时甚至会进一步上升,再次导致与内存相关的崩溃(控制台输出显示这应用程序几分钟后退出之前会显示错误消息)。
虚拟机运行在具有 16 GB RAM 和 3.6GHz 四核超线程 (i7-4790) 的机器上,两者都允许使用所有 4 个核心,CPU 负载范围从相当低到中等。
现在我的问题是:这是 ManifoldCF 或 Solr 中的错误,还是与设置或配置的某个方面有关?如果是我的错,那么修复此问题的适当方法是什么?(如果这实际上是一个我无法修复的错误或问题,那么除了 Simple Post Tool ofc 之外,ManifoldCF 的替代方案也值得赞赏)