2016-08-24 134 views
0

我们有Jenkins设置为我们团队目前正在进行的项目运行工作,但由于OutOfMemory,我们遇到工作不断崩溃的问题。詹金斯工作的SBT不断OutOfMemory

Jenkins环境正在虚拟机上运行。它所在的机器具有相当好的规格,并且不需要很多虚拟机。我们的SBT作业运行在一个单独的作业列表中,其中有8GB的可用RAM。

项目build.properties sbt.version=0.13.9

詹金斯版本。 2.6

我们正在作业执行以下命令:

/usr/java/default/bin/java -Xmx2G -XX:+CMSClassUnloadingEnabled -XX:MaxMetaspaceSize=2G -Dsbt.override.build.repos=true -Dsbt.log.noformat=true -jar /usr/local/sbt/default/bin/sbt-launch.jar compile test:compile test universal:publish 

将会产生整个日志如下:


    Exception in thread "Thread-40" java.io.EOFException 
     at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2626) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1321) 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373) 
     at org.scalatest.tools.Framework$ScalaTestRunner$Skeleton$1$React.react(Framework.scala:945) 
     at org.scalatest.tools.Framework$ScalaTestRunner$Skeleton$1.run(Framework.scala:934) 
     at java.lang.Thread.run(Thread.java:745) 
    Exception in thread "Thread-29" java.net.SocketException: Connection reset 
     at java.net.SocketInputStream.read(SocketInputStream.java:209) 
     at java.net.SocketInputStream.read(SocketInputStream.java:141) 
     at java.net.SocketInputStream.read(SocketInputStream.java:223) 
     at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2321) 
     at java.io.ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:2614) 
     at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2624) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1321) 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373) 
     at sbt.React.react(ForkTests.scala:114) 
     at sbt.ForkTests$$anonfun$mainTestTask$1$Acceptor$2$.run(ForkTests.scala:74) 
     at java.lang.Thread.run(Thread.java:745) 

转储文件的作业产生here(pastebin.com/EM3qva5C )

我们已经尝试了不同的java参数变体,但所有的结果都来了,所以我们想知道是否有东西其他错误/我们需要改变以防止构建失败?

回答

0

您的测试工作在分叉的JVM中,因此您必须为它们提供更多内存。

以下行添加到build.sbt

javaOptions ++= Seq("-Xmx1G") 
+0

嗨,对不起已故的答复。尝试这个没有运气。我一直在做一些进一步的测试和禁用更多的RAM等叉,但仍然没有运气。我注意到它只在测试中失败了。 我们有一个多模块项目,所以我决定运行每个子模块的测试顺序如下: 'compile test:compile module1/test module2/test module3/test module4/test module5/test module6/test module7/test module8/test module9/test' This passed fine but but if I just run: 'compile test:compile test' It fail – Burnett