java service wrapper 级别为info导致内存剧增直至溢出
上周,公司某一环境发生java service wrapper内存剧增导致最后被自动killed的情况,经过分析,确定导致java service wrapper(后续简称wrapper)守护进程内存快速增长直至被killed的最根本原因是应用程序到mysql数据库的jdbc可用连接远远小于java应用并发线程数,导致报了很多的连接异常(这些异常在至少三种情况下会发生:应用程序启动时mysql未启动,应用程序启动期间mysql被正常或异常关闭,mysql负载过高无响应或者超时,三者均可重现wrapper内存无限增长直至溢出),无论是dbcp 1.x,2.x还是c3p0,该问题均会发生,这些未被捕获的异常堆栈被传递到了wrapper守护进程,进而导致wrapper进程内存激增而溢出。而这些错误仅仅会在wrapper的日志级别为INFO或者更低时会被传递给wrapper;如果设置为ERROR或者更高,则不会(至于为何在这种情况下错误堆栈会被传递给wrapper,尚未找到具体的原因)。它与应用程序设置的log4j级别并无直接关系。同时dbcp连接池1.4以及以下版本因对无效的连接自动回收存在bug,会加速该问题的发生。
PS:上述问题仅在出问题的环境centos 7.0.1406版本下wrapper 3.5.29已验证可重现,不保证在其他版本下一定可重现。
解决方法:
1、使用wrapper,需设置conf/osm-runtime.conf中下列参数为ERROR:
wrapper.console.loglevel
wrapper.logfile.loglevel
wrapper.syslog.loglevel
这么更改的副作用是后续主应用程序中的异常将被suppressed,事后无法查找非显示打印的异常。
2、使用tomcat或者其他应用程序比如自己编写shell脚本作为主容器。
建议:统一将jdbc连接池调整为dbcp 2.1.1。
java service wrapper 级别为info导致内存剧增直至溢出的更多相关文章
- Java Service Wrapper将java程序设置为服务
有时候我们希望我们java写的程序作为服务注册到系统中,Java Service Wrapper(下面简称wrapper)是目前较为流行的将Java程序部署成Windows服务的解决方案, 本文将讨论 ...
- Java Service Wrapper 发布Java程序为Windows服务
下载Windows版本:https://www.krenger.ch/blog/java-service-wrapper-3-5-37-for-windows-x64/ 转自:F:\java\bhGe ...
- 使用 Java Service Wrapper 启动java后台进程服务
Java Service Wrapper (http://wrapper.tanukisoftware.com/doc/english/product-overview.html)可以很方便得在各个平 ...
- Java Service Wrapper将jar包安装成Windows服务
刚接触java,第一次使用Java开发windows服务,也是刚不久看了SSM框架 简直也是一头雾水,不过只要用心理解,其实很简单,下面有详细的步骤,包学包会 在windows上运行jar包,需要在工 ...
- Java Service Wrapper简介与使用
在实际开发过程中很多模块需要独立运行,他们并不会以web形式发布,传统的做法是将其压缩为jar包独立运行,这种形式简单易行也比较利于维护,但是一旦服务器重启或出现异常时,程序往往无法自行修复或重启.解 ...
- 利用JAVA Service Wrapper把JAVA程序做成windows服务
今天做了一个读取数据入库的程序.由于读取的数据每天都更新,于是就想把程序做成一个服务,每天定时执行.研究了一下,发现有几种方式可以做.下面我主要记录一下JAVA Service Wrapper方式. ...
- 利用Java Service Wrapper将java项目添加到windows服务中
1.web项目,即tomcat/resin添加至window系统服务,步骤如下:第一步:找到tomcat的bin目录,如:D:\apache-tomcat-8.0.26\bin第二步:打开cmd,cd ...
- 使用Java Service Wrapper在Linux下配置Tomcat应用
前言 Java Service Wrapper是Tanuki Software的一个产品,可以将Java应用注册成Windows或Linux服务,使其可以随系统开机启动,同时可以监控Java应用的状态 ...
- Java Service Wrapper
Java Service Wrapper 将Java 应用程序部署成Windows系统服务Java Service Wrapper 1 Product Overview 1 Editions 2 Me ...
随机推荐
- Cubieboard2裸机开发之(二)板载LED交替闪烁
前言 电路原理在文章http://www.cnblogs.com/lknlfy/p/3583806.html中已经说明,两个LED的原理图是一样的.要使两个LED交替闪烁,只需要在点亮蓝色LED,熄灭 ...
- Ubuntu14.04安装中文输入法以及解决Gedit中文乱码问题
1 设置中文显示环境 1. 打开System Settings 2. 打开Personal-> Language Support. 会弹出如下对话框,提示你“语言支持没安装完整”. 点击“Rem ...
- WCF中因序列化问题引起的异常和错误。
尝试对参数 http://tempuri.org/ 进行序列化时出错: parameters.InnerException 消息是“不应为数据协定名称为“DBNull:http://schemas.d ...
- cocos在win平台exe无法使用 UserDefault 解决方法
exe模拟器用来调度cocos本来是很方便的事情,但最近很多win10策划无法调用UserDefault.一直以为是权限问题,今天有空读一下码才发现.原来是cocos的bug.存在本地的UserDef ...
- jquery的ajax提交时loading提示的处理方法
方法1:使用ajaxStart方法定义一个全局的“加载中...”提示 $(function(){ $("#loading").ajaxStart(function(){ ...
- log4net日志功能使用
早就想了解下log4net这个组件的使用,直至今日才有时间学习了一下,现在把学习的新的总结如下: (1).在项目中添加log4net.dll引用.说明:该版本是1.2.10.0 ,log4ne ...
- 用CentOS 7打造合适的科研环境 :zhuan
这篇博文记录了我用CentOS 7搭建地震学科研环境的过程,供我个人在未来重装系统时参考.对于其他地震学科研人员,也许有借鉴意义. 阅读须知: 本文适用于个人电脑,不适用于服务器: 不推荐刚接触Lin ...
- MyBatis知多少(14)分散的数据库系统
任何一个重要的数据库无疑都会拥有不止一个依赖者.即使该数据库只是简单地被两个Web 应用程序所共享,也有许多事情需要考虑.假设有一个名为网上购物车的Web应用程序,它使用了一个包含类别代码的数据库.就 ...
- 解决 Tomcat 无法绑定 80 端口的问题,以及 Tomcat 配置虚拟目录、二级域名等
问题 今天安装完 Tomcat,安装时把 Tomcat 默认的 HTTP/1.1 Connector Port 从 8080 改为了 7080,启动 Tomcat,在浏览器中输入 Http://loc ...
- 个人对joomla3.2x和joomla2.5X浅薄看法
很久没有写joomla文章了,发现想写的东西还是挺多的,后面抽时间补回来,其实更多还是php的一些东西.joomla3.0以后系统改变挺大,后台都是用bootstrap作为主题,个人对这个无爱,因为他 ...