Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jenkins部署项目使用chef错误:NoMemoryError:无法分配内存_Java_Jenkins_Chef Infra - Fatal编程技术网

Java Jenkins部署项目使用chef错误:NoMemoryError:无法分配内存

Java Jenkins部署项目使用chef错误:NoMemoryError:无法分配内存,java,jenkins,chef-infra,Java,Jenkins,Chef Infra,只是一个免责声明,我是一个IT人员,不是开发人员,所以我需要比你们习惯的更明确的解释。。。我事先道歉 我被要求修复我们在Jenkins中的一个部署作业的问题。部署作业使用厨师烹饪书和刀子来.zip编译的.wars,然后将.zip复制到测试服务器。该作业以前可以工作,但项目文件已变得更大,现在当我们运行作业时,它无法在运行批处理脚本时复制.zip文件 失败并出现错误 ERROR: NoMemoryError: failed to allocate memory 这真的很奇怪,因为我们的Jenki

只是一个免责声明,我是一个IT人员,不是开发人员,所以我需要比你们习惯的更明确的解释。。。我事先道歉

我被要求修复我们在
Jenkins
中的一个部署作业的问题。部署作业使用厨师烹饪书和刀子来
.zip
编译的.wars,然后将
.zip
复制到测试服务器。该作业以前可以工作,但项目文件已变得更大,现在当我们运行作业时,它无法在运行批处理脚本时复制
.zip
文件

失败并出现错误

ERROR: NoMemoryError: failed to allocate memory
这真的很奇怪,因为我们的Jenkins服务器有很多ram。。。我在运行作业时检查了利用率,总利用率没有超过4-6GB,我们为托管Jenkins的虚拟机分配了24gb

这似乎是某种人为的限制,因为如果我手动构建
.zip
并删除所有导入的库
.dll
,并将
zip
的大小减小到500mb以下,它就可以正常工作。但我不希望为了减小大小而弄乱开发人员的项目文件(当作业构建源代码时,它们都会从BitBucket中删除……我不知道删除它们可能会产生什么样的下游影响)

必须有一种方法让它复制
。大于500mb的zips
。。。这是2017年,500mb是一个可怜的限制


有没有关于如何进一步排除故障的想法?我应该查看Jenkins服务器上的任何特定日志文件?控制台输出是我唯一能看到任何东西的地方,告诉我的只是内存分配错误。

Jenkins是一个Java应用程序,Java虚拟机可能有自己的内存限制。 您可以使用将最大堆大小增加到2GB

java -Xmx2048m ...
java-X
将显示所有可用选项的列表


在redhat系统上,您只需将
-Xmx2048m
附加到
/etc/sysconfig/JENKINS
中的
JENKINS\u JAVA\u选项
,然后
systemctl restart JENKINS

啊,我应该指定我们正在从Windows 2012 R2服务器运行JENKINS。。。我愿意试一试。在windows Jenkins安装中,哪里是进行此更改的合适位置?是否回答了您的问题?有点。。。我能够使用该线程上的说明将其增加到1024m。但是,如果我将其设置为2048m,windows服务将无法启动,错误为1067“进程预期终止”。但是1024都不够大(应该是的,zip是965mb…但可能是965mb,可能超过1024mb…idk,数学等等)。这不是问题所在,因为在将部署作业设置为1024的情况下运行部署作业时,仍然会出现分配内存失败错误。我在哪里可以找到更细粒度的日志信息?我将它增加到1700米,这是出于某种原因它允许我设置的最大值。但这应该足够了。。。但我仍然收到分配内存失败错误。有什么想法吗?我不认为是詹金斯自己无法分配内存。我安装了监控插件并重新运行了部署作业,“使用的Java内存”下的内存利用率不会超过120Mb。我在想被调用的其他模块就是内存问题。。。但是控制台输出并没有帮助我缩小分配内存失败的范围。刘海撞在墙上仍然需要帮助,这个问题还没有得到回答。这不是jvm堆空间的问题,其他一些东西正在耗尽内存。