【发布时间】:2015-10-06 07:46:36
【问题描述】:
我们的项目是 maven 项目,我们的框架是这样设计的,即整个项目将被签入到测试环境 [Virtual Linux Machine] 并从那里使用提到的套件文件执行 maven 命令。 jenkins 中触发的每一件事。
作为一个初学者,我不明白这个特定的套件因以下错误而失败
java.lang.OutOfMemoryError: 无法创建新的本地线程 在 java.lang.Thread.start0(本机方法) 在 java.lang.Thread.start(Thread.java:714) 在 com.jcraft.jsch.Util.createSocket(Util.java:372) 在 com.jcraft.jsch.Session.connect(Session.java:215)
套件文件是
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="test" verbose="10">
<parameter name="component" value="run" />
<parameter name="testtype" value="sanity" />
<listeners>
<listener class-name="class" />
</listeners>
<test name="testa" time-out="5400000">
<classes>
<class name="classa " />
</classes>
</test>
<test name="testb" time-out="3600000">
<classes>
<class name="classb"/>
</classes>
</test>
<test name="testc" >
<classes>
<class name="classc" />
</classes>
</test>
<test name="testd">
<classes>
<class name="classdd>
</class>
</classes>
</test>
</suite>
[由于数据隐私,我将其重命名为 classa 和 testa]
请指导我,我必须在 maven 选项中修改或包含在套件文件中,或更改 jenkins 中的任何内容吗?请给我建议。
【问题讨论】:
-
如果你在 Jenkins 之外使用 maven 运行相同的测试,你会得到同样的错误吗?我假设被测类需要大量内存,但这可能是代码中的错误或故意的。那只是你可以决定的事情。如果是有意的,您可以使用
-Xmx200m指定作业可能有多少内存。见wiki.jenkins-ci.org/display/JENKINS/… -
如果需要任何进一步的信息,请发表评论,我可以提供详细信息
-
感谢分享知识。我已将 MAVEN_OPTS 的 evniroment 变量添加为 -XX:MaxPermSize=1024m 并触发工作。
-
由于这个错误,我的测试用例仍然被阻止:( maven_opts = -XX:MaxPermSize=1024m
-
这条消息
unable to create new native thread at表示您超出了允许创建的线程的限制。通常你只能在一个 linux 机器上创建 1024 个线程...与内存无关...
标签: java maven jenkins out-of-memory testng