【问题标题】:How to speed up OpenGrok indexing如何加快 OpenGrok 索引
【发布时间】:2014-09-01 13:58:41
【问题描述】:

最近,我的老板要求我在我工作的公司探索 OpenGrok 的可能性。首先,我在我的 virtualbox lubuntu 上做了几个项目,它工作正常,但有点慢。我把这归咎于我的笔记本电脑的参数平庸。

现在我拥有更大比例的虚拟数据,并且我还在对大量数据运行索引(SVN 存储库 - 100 个不同的项目,其中一些具有多个分支、标签和主干,总共大约 100 000 个文件,几 GB 大小)。所有文件都直接在 SRC_ROOT 中检出。

我希望索引速度相当快,但它已经运行了五天多。我可以看到多个线程通过 htop 运行,但 CPU 使用率为 0.5-2.5%,内存使用率为 0.9%。所以我想这不是计算能力的问题。除非有非常慢的硬盘驱动器,否则我不知道问题出在哪里。

此外,索引过程似乎正在放缓。一开始大约是 1 秒/文件,现在大约是 5 秒/文件。不幸的是我还没有触发进度选项,所以我不知道它还能运行多久。

任何想法如何使索引更快?如何更有效地利用资源?目前的速度根本无法使用...

【问题讨论】:

    标签: performance svn indexing opengrok


    【解决方案1】:

    我认为提高性能的简单方法是通过设置 JAVA_OPTS 并使用 64 位 java 来运行 opengrok 索引。 此外,使用 derby 存储生成的索引数据也可以提高性能。 有关如何使用和设置 opengrok 的更多信息

    【讨论】:

      【解决方案2】:

      我认为问题出在 SVN,尝试调试并提高从您的 VM 访问 SVN 的速度,或者完全禁用(暂时)svn 以获得快速索引(您可以稍后逐步将历史记录添加到索引中 - 每个项目,甚至如果需要几天时间,请参阅有关如何为每个项目运行索引器的选项) 或者,如果您可以镜像 SVN 存储库并进行本地 svn 调用,这也会给您带来提升。 因此得出结论 {OpenGrok 可以检测 svn,跳过历史创建(动态启用它)并仅索引结帐,然后稍后添加本地历史以避免长时间等待动态生成历史。 也就是说,git 和 hg 似乎在历史索引方面与 {OpenGrok 配合得很好。

      【讨论】:

        【解决方案3】:

        我自己也遇到过这个问题,我发现索引器大部分 (>90%) 的时间都用于查询源代码控制系统。

        也就是说,我使用的一些项目确实使用 Perforce 和 SVN,所以我不想完全禁用它们,所以我所做的是索引 两次 -- 首先,使用所有涉及源代码管理的选项都被禁用,然后再次启用所有选项。

        那样,它仍然需要很长时间(在我的情况下是几天),但至少我有一个可用的索引在几个小时内启动并运行,然后它可以花几天时间来处理所有历史记录。

        后续索引应该更快,因为我希望历史缓存仅针对比缓存历史更新的文件更新。

        (也就是说,如果我可以在外部更新历史缓存,那就太好了,这样在我启动索引器之前一切都准备好了,并且将索引器配置为根本不查找历史信息,而只是索引缓存的内容)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-03-14
          • 1970-01-01
          • 1970-01-01
          • 2015-02-09
          • 1970-01-01
          相关资源
          最近更新 更多