Oracle Service Bus构建时间在Linux上比在Windows上慢30倍

时间:2015-10-12 14:14:54

标签: java linux maven osb

我目前有一个带有21个模块的OSB项目,大约需要4分钟才能构建我的本地2核/ 12GB ram笔记本电脑,运行Windows时不使用线程,只需简单的构建安装。每个模块需要10-20秒。

在我在Ubuntu上运行的CI服务器上构建这个完全相同的项目时,8核/ 16GB RAM构建时间接近110分钟,每个模块使用大约4分钟。

Linux版本的一些细节:

  • 每个模块的这4分钟大部分花费在0%的CPU利用率上。
  • MAVEN_OPTS为“-Xmx512m -Xms512m”
  • Java 7和8上的构建时间相同
  • 使用-X标志运行时,大部分时间花在“ - end configuration - ”

我尝试过增加文件描述符限制,认为这是问题所在。这对构建时没有任何作用。

2 个答案:

答案 0 :(得分:3)

这里有很多变数。我无法提供答案,但总的来说,我会尽量减少问题。你说它约有21个项目。是1同样慢吗?我知道你说你用4分钟/模块得到它,但这与其中有1个模块的项目不同。文件描述符(ulimit)的绝对范围可能非常麻烦,即使您在构建期间一次只查看一个模块。

其次,确保您自己的笔记本电脑的环境变量类似。 Windows到Linux并不是最容易比较的,但您应该能够确定JAVA_OPTSMAVEN_OPTS,各种-X / -D标志是否相同, -Xms/-Xmx是否设置相同等等。

此外,您是否已查看我找到的任何Google搜索结果?

您遇到问题的困难部分是我们甚至不关注远程近距离环境。我们不知道

  1. 环境变量
  2. settings.xml(和/etc/.../.settings.xml
  3. CI服务器软件是在运行构建还是在本地计算机和远程计算机上运行相同的mvn clean install
  4. 等。等
  5. 我不能说这个网站甚至是让某人排除故障的最佳地点。如果您正在构建一组OSB项目,那么根据您的支持计划,您可以更好地使用Oracle Support提交SR并要求他们帮助您。至少在SR中,在通信中有更多的来回。在这里,您希望提供所有可能的信息,然后人们向您提供答案。如果没有关于你的问题的任何数据,我们无处可去,并且做出疯狂的假设/猜测。

答案 1 :(得分:3)

在Windows和Linux上使用VisualVM对maven进行概要分析后发现,在Linux上,它花费了大量时间来生成随机种子。

enter image description here

因此,通过更改为(稍微不那么安全)/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

这可能带来一些安全隐患,如果你需要这样做,你应该先做一些研究。