当前位置: 首页 > 面试题库 >

当它作为守护程序在Ubuntu上运行时,如何给Jenkins更多的堆空间?

欧阳嘉年
2023-03-14
问题内容

我的Jenkins作业内存不足,java.lang.OutOfMemoryError在构建日志中提供了消息。但是我使用Ubuntu软件包管理器(aptitude)或apt- get安装Jenkins,但我不知道在哪里寻找更改分配给Jenkins的堆空间的方法。


问题答案:

OutOfMemoryErrorJenkins作业运行时,您可能会遇到两种消息:

  • java.lang.OutOfMemoryError: Heap space –这意味着您需要在守护程序启动时增加分配给Jenkins的堆空间量。
  • java.lang.OutOfMemoryError: PermGen space–这意味着您需要增加分配用于存储Java对象元数据的生成空间量。增加-Xmx参数的值不会对此错误产生影响。

在Ubuntu 12.04 LTS上,取消注释第JAVA_ARGS10行的设置/etc/default/jenkins

  • 要添加更多的Java堆空间,请增加-XmxJava参数的值。设置内存分配池(垃圾收集堆)的最大大小。
  • 要添加更多的PermGen空间,请添加参数XX:MaxPermSize=512m512如果需要更多的参数,请替换其他内容。永久生成堆保存有关用户类的元信息。

例如,此摘录摘自/etc/default/jenkins全新安装的Jenkins之后的默认值:

# arguments to pass to java
#JAVA_ARGS="-Xmx256m"

如果将堆空间设置为1 GB,将是这样:

# arguments to pass to java
JAVA_ARGS="-Xmx1048m"

注意不要将堆大小设置得太大,因为分配的任何内容都会减少操作系统和其他程序可用的内存量,这可能会导致过多的分页(RAM和交换磁盘之间来回交换内存,这会减慢速度)您的系统关闭)。

如果还设置MaxPermSpace,则需要在参数之间添加一个空格):

# arguments to pass to java
JAVA_ARGS="-Xmx1048m -XX:MaxPermSize=512m"

进行更改后,请从Jenkins Web界面正常重启Jenkins,或使用强制从命令行立即重启sudo /etc/init.d/jenkins restart

我发现以下站点对于理解Java最大和永久生成堆大小很有用:http :
//www.freshblurbs.com/blog/2005/05/19/explaining-java-lang-outofmemoryerror-
permgen-space.html



 类似资料:
  • 问题内容: 我试过了 返回: 并尝试: 当我回车期望过程继续运行时,我收到: 如何将sbt作为守护程序运行? 更新: 我认为cd上一个目录: 因此,它作为守护程序启动,但是如果我执行任何操作(如更改dir),它将终止该进程?如何保持进程运行? 问题答案: 看起来像从您的终端请求的输入。如果它确实不需要输入(可能是在后台运行程序),则可以这样运行: 编辑 好的,这是一个难题。简短答案:运行如下: 理

  • 问题内容: 我想增加詹金斯的可用堆空间。但是由于它是作为服务安装的,所以我不知道该怎么做。 问题答案: 在您的Jenkins安装目录中,有一个jenkins.xml,您可以在其中设置各种选项。将具有所需大小的参数-Xmx添加到arguments- tag中(如果已经存在,则增加大小)。

  • 问题内容: 在Ubuntu中将Go程序作为守护程序启动的正确方法是什么?然后,我将使用Monit对其进行监视。我应该做这样的事情吗: 我应该考虑Go特定的事情吗? 问题答案: 您应该为您的程序()构建可执行文件,然后为upstart编写脚本,它将为您的守护程序运行程序,或者使用诸如daemonize之类的外部工具。我更喜欢后一种解决方案,因为它不依赖于系统相关的新贵。通过守护进程,您可以像 这将为

  • 问题内容: 我有一个脚本,该脚本每隔X次运行一次我的PHP脚本: 如何将其作为守护程序启动? 问题答案: 要将其作为完整的守护程序从Shell运行,您需要使用并重定向其输出。您可以将输出重定向到日志文件,也可以将其丢弃。假设您的脚本名为myscript.sh,请使用以下命令: 这会将进程与当前的shell(stdin,stdout和stderr)完全分开。如果要将输出保留在日志文件中,请用/ pa

  • 我已经创建了一个Python包并在PyPI上发布了它,比如说< code>spamandeggs。这个软件包是跨平台的(Windows、GNU/Linux、MacOSX ),目的是定期(比如每5分钟)向用户更新某些信息。可以从命令行通过命令< code>spamtheeggs运行该包。 以下是我面临的问题: 问题01:如何对通过< code>spamtheeggs命令运行的脚本进行daemoniz