我目前有一个带有21个模块的OSB项目,大约需要4分钟才能构建我的本地2核/ 12GB ram笔记本电脑,运行Windows时不使用线程,只需简单的构建安装。每个模块需要10-20秒。
在我在Ubuntu上运行的CI服务器上构建这个完全相同的项目时,8核/ 16GB RAM构建时间接近110分钟,每个模块使用大约4分钟。
Linux版本的一些细节:
我尝试过增加文件描述符限制,认为这是问题所在。这对构建时没有任何作用。
答案 0 :(得分:3)
这里有很多变数。我无法提供答案,但总的来说,我会尽量减少问题。你说它约有21个项目。是1同样慢吗?我知道你说你用4分钟/模块得到它,但这与其中有1个模块的项目不同。文件描述符(ulimit
)的绝对范围可能非常麻烦,即使您在构建期间一次只查看一个模块。
其次,确保您自己的笔记本电脑的环境变量类似。 Windows到Linux并不是最容易比较的,但您应该能够确定JAVA_OPTS
,MAVEN_OPTS
,各种-X
/ -D
标志是否相同, -Xms/-Xmx
是否设置相同等等。
此外,您是否已查看我找到的任何Google搜索结果?
您遇到问题的困难部分是我们甚至不关注远程近距离环境。我们不知道
settings.xml
(和/etc/.../.settings.xml
)mvn clean install
? 我不能说这个网站甚至是让某人排除故障的最佳地点。如果您正在构建一组OSB项目,那么根据您的支持计划,您可以更好地使用Oracle Support提交SR并要求他们帮助您。至少在SR中,在通信中有更多的来回。在这里,您希望提供所有可能的信息,然后人们向您提供答案。如果没有关于你的问题的任何数据,我们无处可去,并且做出疯狂的假设/猜测。
答案 1 :(得分:3)
在Windows和Linux上使用VisualVM对maven进行概要分析后发现,在Linux上,它花费了大量时间来生成随机种子。
因此,通过更改为(稍微不那么安全)/dev/./urandom
构建时间从110分钟下降到 1分钟47秒。
如何执行此操作的示例是将设置作为标志传递:
-Djava.security.egd=file:/dev/./urandom
如果您想永久设置此项,可以通过更改文件jdk1.7.0_75/jre/lib/security/java.security
来完成此操作:
securerandom.source=file:/dev/urandom
到
securerandom.source=file:/dev/./urandom
。
这可能带来一些安全隐患,如果你需要这样做,你应该先做一些研究。