2016-08-24 74 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