内存溢出导致jenkins自动部署到tomcat失败

原文地址:http://openwares.net/java/jenkens_deploy_to_tomcat_error_of_outofmemoryerror.html

jenkins自动部署war到tomcat 7应用服务器时很不稳定,经常出现错误:


1

2

3

4

5

6

7

ERROR: Publisher hudson.plugins.deploy.DeployPublisher aborted due to exception

org.codehaus.cargo.container.ContainerException: Failed to deploy [/var/lib/jenkins/jobs/devel_auto_build_deploy/workspace/build/libs/reis.war]

    ...

Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: FAIL - Encountered exception javax.management.RuntimeErrorException: Error invoking method check

...

org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: FAIL - Encountered exception javax.management.RuntimeErrorException: Error invoking method check

...

tomcat日志可以看到如下异常:
堆空间内存不足

1

java.lang.OutOfMemoryError: Java heap space

永久代内存不足


1

2

3

4

5

SEVERE: Exception invoking method check

java.lang.OutOfMemoryError: PermGen space

...

Exception in thread "http-bio-8080-exec-38" java.lang.OutOfMemoryError: PermGen space

OpenJDK 64-Bit Server VM warning: Exception java.lang.OutOfMemoryError occurred dispatching signal SIGTERM to handler- the VM may need to be forcibly terminated

出现此问题的原因是tomcat默认配置的堆和非堆内存都太小了,需要调整如下JVM内存配置参数:

    • -Xms

初始堆内存大小

    • -Xmx

最大堆内存大,一般设置-Xms与-Xmx一样大小,根据应用类型和物理内存大小来决定二者的大小

    • -Xmn或者-XX:NewSize

堆内存中年轻代的大小

    • -XX:PermSize

永久代内存的初始大小

    • -XX:MaxPermSize

永久代内存的最大值

一般设置这几个参数也就够了,debian系统上tomcat 7 设置JVM的内存参数要在配置文件/etc/default/tomcat7中的JAVA_OPTS参数中设置。

一个web app,服务器物理内存16G,其设置如下:

1

JAVA_OPTS="-Djava.awt.headless=true -Xmx5120m -Xms5120m -Xmn1024m -XX:PermSize=1024m -XX:MaxPermSize=1024m -XX:+UseConcMarkSweepGC"

References:
[1]JVM系列一:JVM内存组成及分配
[2]JVM系列三:JVM参数设置、分析
[3]java.lang.OutOfMemoryError: Permgen space

时间: 2024-09-30 16:10:12

内存溢出导致jenkins自动部署到tomcat失败的相关文章

Docker自动部署Apache Tomcat

本文讲的是Docker自动部署Apache Tomcat,[编者的话]本文是Docker的入门文章,推荐Java开发者阅读.文章详细介绍了如何用Docker来安装部署Tomcat. 介绍 本文会讲述: 扩展Tomcat的官方Dockerfile 构建新的镜像 从修改过的新镜像启动容器 在容器里部署RESTful的Web服务并测试 Apache Tomcat 使用docker search可以查到最流行的(和官方的)Docker Tomcat容器: $ sudo docker search tom

Linux主机内存溢出导致oracle的SYS用户无法正常登陆

    一般情况下,ORACLE DBA看到如下情况的第一反应是,数据库实例没有启动或者是数据库环境变量没有设置正确,今天遇到的情况均不是以上两种情况,有点特别,且来看看为哪般. oracle@POC-SV12-I2KDB:~> sqlplus / as sysdba SQL*Plus: Release 11.1.0.7.0 - Production on Thu Aug 13 11:31:58 2015 Copyright (c) 1982, 2008, Oracle.  All rights

maven构建项目自动部署到tomcat中遇到的各种sb问题总结

原文:http://hi.baidu.com/ae6623/item/809c7cfb3f9eae4d922af272 苦逼的人每天都能遇到苦逼的问题,把这些问题记录下来,等你们来了就不苦逼了!也算积德行善.. 本教程主要解决两个问题:(主要是部署到Tomcat 6.x 和 Tomcat 7.x也有区别,请各自座号入座.) 1.苦逼的401问题 [ERROR] Failed to execute goal  org.codehaus.mojo:tomcat-maven-plugin:1.1:de

Eclipse中的Web项目无法自动部署到Tomcat

1. 在Eclipse中的最底下的Servers视图,将所有部署的项目移除,如图所示: 2. 在该服务器上,单击鼠标右键选择"Open",或在空白处按F3快捷键,或者是双击,打开如下的页面: 3. 在"Server Locations"处选择"Use Tomcat installation",可以清楚的看到默认是"Use Workspace metadata",即上边所说的目录.然后在Deploy的path处写上webapps

tomcat-Tomcat多次热部署后引起内存溢出的问题

问题描述 Tomcat多次热部署后引起内存溢出的问题 如题 为方便开发我将项目设置为热部署,但是多次热部署后Tomcat会出现内存溢出的问题. 网上说是Tomcat内存设置的比较小,需要调整Tomcat内存.但是我认为这不是好的解决方案. 我想知道引起这个问题的根本原因是什么. 另外使用Tomcat的manager热部署也是同样的问题. 使用Maven自动部署也是同样的问题. 请求各位大神的帮忙,请指教小弟.谢谢了 解决方案 需要优化jvm,不过再怎么优化,也不能完全解决这个问题,只能把重启的频

有关tomcat内存溢出的完美解决方法_java

tomcat内存溢出设置JAVA_OPTS 答案1 设置Tomcat启动的初始内存 其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4.可以利用JVM提供的-Xmn -Xms -Xmx等选项可 进行设置 三.实例,以下给出1G内存环境下java jvm 的参数设置参考: JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -D

关于数据压力测试,内存溢出测试。

问题描述 现有的OA支撑着全公司(各子公司包括办事处)的日常运行,系统是用C#+SQLServer写的,用户数接近400多,系统每天刚运行的时候服务器大概占用的内存都是100多M200M左右,但随着使用时间的增加,一天运行下来系统会越来越慢,每天下班一查看,数据库服务器物理内存的占用量几乎接近2G(物理内存约1.7个G,虚拟内存约1.8个G),经常因为这样导致短时间的系统"休克",本人估计是因为系统内存内存溢出导致系统占用内存剧增的,直接造成系统运行缓慢,甚至"休克"

关闭IBM HTTP Server插件自动生成服务,以避免部署大量应用时导致Dmgr内存溢出

IBM HTTP Server插件文件plugin-cfg.xml自动生成机制在WAS的Dmgr里默认是启用的,为了避免在部署大量应用的场景中,因配置的变动而触发插件文件的自动再次生成,进而导致Dmgr内存溢出.解决方法除了直接加大Dmgr自身的JVM堆大小之外,也可以禁用掉插件自动生成机制,操作步骤如下: 1.控制台 ==>> 服务器 ==>> 服务器类型 ==>> Web服务器 ==>> 点击右边具体的<Web服务器名称> ==>>

Tomcat的热部署,出现内存溢出如何解决呢? 求大侠帮帮忙!

问题描述 我在Tomcat的conf目录下的server.xml文件中加了这句<Contextpath="/DCCS"docBase="D:javaapache-tomcat-6.0.18webappsDCCS"debug="99"reloadable="true"crossContext="true"/>;后tomcat不断的加载,请问我该如何解决? 解决方案 解决方案二:tomcat不断的加