我的Jenkins作业内存不足,在构建日志中给出java.lang.OutOfMemoryError消息。但我使用Ubuntu软件包管理器、aptitude或apt-get来安装Jenkins,我不知道从哪里来更改分配给Jenkins的堆空间量。
java.lang.OutOfMemoryError
aptitude
apt-get
gywdnpxw1#
Jenkins 作业 运行 时 , 您 可能 会 遇到 两 种 类型 的 OutOfMemoryError 消息 :
OutOfMemoryError
java.lang.OutOfMemoryError: Heap space
java.lang.OutOfMemoryError: PermGen space
-Xmx
在 Ubuntu 12.04 LTS 上 , 取消 注解 /etc/default/jenkins 第 10 行 的 JAVA_ARGS 设置 :
/etc/default/jenkins
JAVA_ARGS
XX:MaxPermSize=512m
512
例如 , 此 解 压缩 来自 全新 安装 Jenkins 后 的 默认 /etc/default/jenkins :
# arguments to pass to java #JAVA_ARGS="-Xmx256m"
中 的 每 一 个如果 将 堆 空间 设置 为 1 GB , 则 显示 如下 :
# arguments to pass to java JAVA_ARGS="-Xmx1048m"
格式注意 不要 将 堆 大小 设置 得 太 大 , 因为 无论 分配 什么 , 都会 减少 操作 系统 和 其他 程序 可用 的 内存 量 , 这 可能 会 导致 过多 的 分页 ( 内存 在 RAM 和 交换 磁盘 之间 来回 交换 , 这 会 降低 系统 速度 ) 。如果 还 设置 了 MaxPermSpace , 则 需要 在 参数 之间 添加 一 个 空格 ) :
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 的 最 大 值 。
sudo /etc/init.d/jenkins restart
5rgfhyps2#
对于CentOS,Jenkins.xml默认位于/etc/sysconfig/(对于jenkins-1.579-1.1)目录中JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xmx -XX:MaxPermSize="
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xmx -XX:MaxPermSize="
c6ubokkw3#
如果你使用的是Ubuntu服务器,首先安装Monitoring插件,看看Jenkins使用了多少内存,比如我安装后看到的是:
然后,使用命令free -m,我计算出了服务器的内存大小,在我的例子中是16GB。JAVA_ARGS="-Djava.awt.headless=true"至JAVA_ARGS="-Xmx8384m -Djava.awt.headless=true"其中8384是8Gb。然后我使用命令sudo service jenkins restart重新启动Jenkins,然后在触发出现内存问题的作业后,情况看起来好多了,作业可以在这次和后续运行中完成:
free -m
JAVA_ARGS="-Djava.awt.headless=true"
JAVA_ARGS="-Xmx8384m -Djava.awt.headless=true"
sudo service jenkins restart
8fq7wneg4#
为特定作业设置堆大小的另一种方法是为每个作业使用环境变量。这样可以确保在不使用需要更高内存的作业时仍有内存可用。
GRADLE_OPTS="-Dorg.gradle.jvmargs=-Xms1024M -Xmx8192M -XX:PermSize=512M -XX:MaxPermSize=2048 -XX:+CMSClassUnloadingEnabled -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8" JAVA_OPTS="-XX:MaxPermSize=2048M"
wz8daaqr5#
我费了好大劲才把它做成。这是关键的论点:“_JAVA_选项”
我尝试了所有其他参数,但它总是运行mvn包这样:
导致OutOfMemory异常...(AspectJ问题)在添加了env var“_JAVA_OPTIONS”之后,在我的日志中我注意到:
终于打通了!我正在运行Jenkins战争组织。Jenkins-ci.main:Jenkins-战争:2. 190. 3
5条答案
按热度按时间gywdnpxw1#
Jenkins 作业 运行 时 , 您 可能 会 遇到 两 种 类型 的
OutOfMemoryError
消息 :java.lang.OutOfMemoryError: Heap space
- 这 意味 着 当 守护 进程 启动 时 , 您 需要 增加 分配 给 Jenkins 的 堆 空间 量 。java.lang.OutOfMemoryError: PermGen space
- 这 意味 着 您 需要 增加 分配 给 存储 Java 对象 元 数据 的 生成 空间 量 。 增加-Xmx
参数 的 值 对 该 错误 没有 影响 。在 Ubuntu 12.04 LTS 上 , 取消 注解
/etc/default/jenkins
第 10 行 的JAVA_ARGS
设置 :-Xmx
Java 参数 的 值 。 该 参数 设置 内存 分配 池 ( 垃圾 收集 堆 ) 的 最 大 大小 。XX:MaxPermSize=512m
( 如果 需要 更多 的 空间 , 请 用 其他 参数 替换512
。 永久 生成 堆 保存 有关 用户 类 的 元 信息 。例如 , 此 解 压缩 来自 全新 安装 Jenkins 后 的 默认
/etc/default/jenkins
:中 的 每 一 个
如果 将 堆 空间 设置 为 1 GB , 则 显示 如下 :
格式
注意 不要 将 堆 大小 设置 得 太 大 , 因为 无论 分配 什么 , 都会 减少 操作 系统 和 其他 程序 可用 的 内存 量 , 这 可能 会 导致 过多 的 分页 ( 内存 在 RAM 和 交换 磁盘 之间 来回 交换 , 这 会 降低 系统 速度 ) 。
如果 还 设置 了
MaxPermSpace
, 则 需要 在 参数 之间 添加 一 个 空格 ) :格式
进行 更改 后 , 从 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 的 最 大 值 。
5rgfhyps2#
对于CentOS,Jenkins.xml默认位于/etc/sysconfig/(对于jenkins-1.579-1.1)目录中
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xmx -XX:MaxPermSize="
c6ubokkw3#
如果你使用的是Ubuntu服务器,首先安装Monitoring插件,看看Jenkins使用了多少内存,比如我安装后看到的是:
然后,使用命令
free -m
,我计算出了服务器的内存大小,在我的例子中是16GB。JAVA_ARGS="-Djava.awt.headless=true"
至
JAVA_ARGS="-Xmx8384m -Djava.awt.headless=true"
其中8384是8Gb。然后我使用命令
sudo service jenkins restart
重新启动Jenkins,然后在触发出现内存问题的作业后,情况看起来好多了,作业可以在这次和后续运行中完成:8fq7wneg4#
为特定作业设置堆大小的另一种方法是为每个作业使用环境变量。这样可以确保在不使用需要更高内存的作业时仍有内存可用。
wz8daaqr5#
我费了好大劲才把它做成。这是关键的论点:“_JAVA_选项”
我尝试了所有其他参数,但它总是运行mvn包这样:
导致OutOfMemory异常...(AspectJ问题)
在添加了env var“_JAVA_OPTIONS”之后,在我的日志中我注意到:
终于打通了!
我正在运行Jenkins战争组织。Jenkins-ci.main:Jenkins-战争:2. 190. 3