最近我的老板要求我在我正在为之工作的公司中探索OpenGrok的可能性。首先,我从我的virtualbox lubuntu开始了几个项目,它运行正常,但有点慢。为此,我把我的笔记本电脑归咎于平庸的参数。
现在我有更大比例的虚拟化,我也在更大量的数据上运行索引(SVN存储库--100个不同的项目,其中一些有多个分支,标签和主干,总共约10万个文件,几个GB的大小)。所有文件都直接在SRC_ROOT中签出。
我希望合理快速的索引,但现在已经运行了五天以上。我可以看到多个线程通过htop运行,但CPU使用率为0.5-2.5%,内存使用率为0.9%。所以我想这不是计算能力的问题。除非有非常慢的硬盘驱动器,否则我不知道问题是什么。
此外,索引过程似乎正在放缓。在开始时它大约是1秒/文件,现在大约是5秒/文件。不幸的是我还没有触发进度选项,所以我不知道它还能运行多长时间。
如何更快地制作索引?如何更有效地使用资源?目前的速度根本无法使用......
答案 0 :(得分:1)
我认为提高性能的简单方法是通过设置JAVA_OPTS和使用64位java来运行opengrok索引。 此外,使用derby存储生成的索引数据也会提高性能。 有关如何使用和设置opengrok
的更多信息答案 1 :(得分:0)
我认为问题是SVN,请尝试从您的VM调试并提高SVN访问的速度,或者完全禁用(临时)svn以获取快速索引(您可以稍后将历史记录逐步添加到索引中-每个项目,甚至(如果需要几天的时间,请参阅有关如何为每个项目运行索引器的选项) 或者,如果您可以镜像SVN存储库并进行本地svn调用,那么也应该会有所帮助。 因此,可以断言{OpenGrok可以检测svn,跳过历史记录创建(即时启用它),仅对结帐建立索引,然后稍后在本地添加历史记录,避免长时间等待动态生成历史记录。 也就是说,就历史索引而言,git和hg似乎可以与{OpenGrok一起使用。
答案 2 :(得分:-1)
我自己也遇到了这个问题,并且发现索引器花费了大部分时间(> 90%)来查询源代码控制系统。
也就是说,我使用的某些项目确实使用Perforce和SVN,所以我不想完全禁用它们,所以我要做的是索引两次-首先,使用禁用所有涉及源代码管理的选项,然后再次启用所有选项。
那样,它仍然需要花费很长时间(以我为例,需要几天),但是至少我有一个可用的索引并在几个小时内就可以运行,然后它可以花几天的时间来计算所有历史记录。 / p>
后续索引应该更快,因为我希望只对比缓存的历史记录新的文件才更新历史记录缓存。
(也就是说,如果我可以从外部更新historycache,那么在我完全启动索引器之前就已经准备好了,并且将索引器配置为根本不查找历史信息,而是只查找索引缓存的内容)