Jenkins构build失败与OOM:无法创build新的本地线程

我在2GB RAM的VServer上设置了一个jenkins实例,运行CentOS 6.7的时候没有其他的运行(使用率<200MB)。

当启动jenkins构build所述实例时,jenkins运行gradle --debug --stacktrace test时总会出现此错误gradle --debug --stacktrace test

19:26:50.727 [错误] [org.gradle.BuildExceptionReporter]引起:java.lang.OutOfMemoryError:无法创build新的本地线程

由于这似乎是不允许multithreading的情况下,我提出了限制:

[root @ xxx]#runuser -s / bin / bash jenkins -c'ulimit -u'

16384

我也尝试了不同的jenkins JVM内存分配标志,给实例200MB或1GB没有改变,降低堆栈大小以允许本地线程的空间也没有帮助。

当我以root运行相同的gradle命令时,gradle会挂起一个类似的错误:

 19:29:14.939 [QUIET] [system.out] Error occurred during initialization of VM 19:29:14.940 [QUIET] [system.out] java.lang.OutOfMemoryError: unable to create new native thread 19:29:14.941 [QUIET] [system.out] at java.lang.Thread.start0(Native Method) 19:29:14.941 [QUIET] [system.out] at java.lang.Thread.start(Thread.java:714) 19:29:14.942 [QUIET] [system.out] at java.lang.ref.Reference.<clinit>(Reference.java:187) 

还有什么我可以尝试解决这个问题吗?

您将要增加给予Gradle JVM本身的堆大小,这不会从Jenkinsconfigurationinheritance。 你可以使用GRADLE_OPTS环境variables来指定这个variables,或者在Jenkins中全局地通过“Manage Jenkins>configuration系统>全局属性>环境variables”来添加一个GRADLE_OPTSvariables,也可以在Gradle调用中添加适当的设置。带有环境variables的命令,例如:

 GRADLE_OPTS="-Xmx256m" ./gradlew build