一次Tomcat6.0.33版本号与6.0.44版本号差异所引发的问题
前序(公司应用为Web应用, 部署serverLinux + Nginx + Tomcat )
一天收到公司报警邮件,显示个别机器方法调用严重超时,寻常都是在100ms以内响应的方法,突然某段时间响应时间上升到几秒,開始怀疑是机器的问题,暂时把机器从线上摘掉。重新启动完之后再挂到线上,通过一段时间观察发现各方法响应时间正常。
又过了几天,发现好几台机器都出现这种情况,感觉不是机器的问题,開始对jvm进行分析,通过分析发现,系统young gc耗时从開始的10ms左右慢慢上升到几百毫秒,old区使用超过了90%。并且系统没有进行过full gc,再看其它方法响应时间正常的机器,young gc一般10ms左右。可是每隔一小时运行一次full gc,full gc耗时几百毫秒,而old区差点儿每隔四小时就会清空,感觉机器响应慢的问题与young gc耗时长有非常大关系。通过上网查找资料。发现young
gc耗时与old区使用大小有非常大关系,假设old区使用太大。运行young gc就会非常耗时。导致系统响应时间变慢。
尽管找到了系统响应时间变慢的原因,可是不知道详细是什么原因导致的。由于机器都是同样的,并且也没有显示调用System.gc()的代码,后来通过对照异常机器与正常机器的各项配置,发现正常的机器Tomcat版本号号为6.0.33。异常机器Tomcat版本号号都为6.0.44。咋一看感觉Tomcat版本号都一样。没有区别,只是还是不放心。就找到这两个Tomcat版本号的源代码。查找是否有显式调用System.gc()的方法,通过查找发现,Tomcat版本号6.0.33
的内存泄露监听器JreMemoryLeakPreventionListener
。每隔一小时就会调用一次System.gc(),而Tomcat版本号6.0.44的内存泄露监听器调用一次System.gc()的时间间隔为Integer.max
-1 s,差点儿不会显式的调用System.gc()。
以上最终找到了问题所在,Tomcat版本号改为了6.0.33,之后系统恢复正常。
一次Tomcat6.0.33版本号与6.0.44版本号差异所引发的问题的更多相关文章
- OGLplus 0.33.0 发布,OpenGL 的 C 封装库
OGLplus 0.33.0 引入很多新的 OGLplus 和 OALplus 示例,更新了构建系统.CamMatrix::LookingAt 构造器.Texture::MaxLevel getter ...
- 最新版本号cocos2d­2.0­x­2.0.2使用新资源载入策略!不再沿用-hd、-
前段时间cocos2dx更新了最新版本号cocos2d2.0x2.0.2.也从这个版本号開始对于资源载入与管理都改变了策略. 在之前的载入方式都是通过沿用与cocos2d-iphone一样 ...
- Hdu1401 Solitaire 2017-01-18 17:21 33人阅读 评论(0) 收藏
Solitaire Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Sub ...
- ASP.NET 5 已死 - 隆重介绍 ASP.NET Core 1.0 和 .NET Core 1.0
还没正式登场就死了?不能怪我标题党,是大神Scott在他博客上这么说的,我只是翻译了一下. 在1月20号最新的ASP.NET Community Standup视频中,微软aspnet开发组的大帅哥 ...
- .NET Core 2.0及.NET Standard 2.0
.NET Core 2.0的发布时间,.NET Core 2.0预览版及.NET Standard 2.0 Preview大概在5月中旬或下旬发布. .NET Core 2.0正式版本发布时间大约在Q ...
- Oracle 10.2.0.5升级至11.2.0.4
参照MOS 官方文档Complete Checklist for Manual Upgrade to Oracle Database 11gR2 (11.2) (Doc ID 837570.1)一.升 ...
- .NET Core 2.0及.NET Standard 2.0 Description
NET Core 2.0的发布时间,.NET Core 2.0预览版及.NET Standard 2.0 Preview大概在5月中旬或下旬发布. .NET Core 2.0正式版本发布时间大约在Q3 ...
- 【Oracle】RAC 10.2.0.1升级10.2.0.5
环境: OS:OEL5.6 RAC:10.2.0.1.0 相关环境变量: CRS_HOME /u01/app/oracle/product/10.2.0/db_1 ORACLE_HOME /u01 ...
- 升级_开阔视野之Oracle图形化升级(dbca建库后升级)—10.2.0.1.0升为10.2.0.5.0
***********************************************声明*************************************************** ...
随机推荐
- cocos2d-x:初探TestLua
打开\cocos2d-x-2.2.3\cocos2d-win32.vc2012.sln sln里面有个TestLuaproject 初探完成...(不要逗) 启动一下project,cocos2d-x ...
- 最长公共子序列(LCS)问题 Longest Common Subsequence 与最长公告字串 longest common substr
问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X=“x0,x1,…,xm-1”,序列Y=“y0,y1,…,yk ...
- 如何实现 Copying derived entities using only base class pointer
#include <iostream> struct CloneableBase { ; }; template<class Derived> struct Cloneable ...
- Drupal所能够理解的资源
Drupal能够识别哪些资源类型? profile,不知道怎么翻译,应该是指安装类型,固定地存放于profiles目录下. module,模块,可以存在于多个目录下:modules.profiles/ ...
- mongodb进阶三之mongodb管理
http://blog.csdn.net/stronglyh/article/details/46827141 平时的开发环境win比較多啊,但生产环境要放到unix环境上 一:命令 安装就不少了,网 ...
- c#金额转换成中文大写金额 .Net开发Windows服务
c#金额转换成中文大写金额 2018-08-24 转别人 c#金额转换成中文大写金额 /// <summary> /// 金额转换成中文大写金额 /// </summary> ...
- ParameterizedThreadStart,ThreadStart的使用,线程Thread传参数
Thread threadWithParam = new Thread(new ParameterizedThreadStart(new ThreadTest().ShowMsg));//thread ...
- swiper动态加载数据滑动失效,ajax执行后swiper.js的效果消失问题
使用swiper.js做一些动效时,如果进行了ajax,并且重新把DOM写入到HTML代码中,会导致swiper.js的特效消失的问题.原因是ajax加载后,原先new 的Swiper对象,不认识新来 ...
- 使用 P3P 规范让 IE 跨域接受第三方 cookie
前两天帮同事处理一个 js 跨域问题,使用 jsonp 跨域提交用户名密码请求,实现自动登录第三方网站,即 SSO(single-sign-on) 单点登录,一处登录处处登录.在 Chrome 下没问 ...
- Oracle之标示符无效
一.引言 今天使用Oracle客户端执行一条sql语句 order by colname3 结果一直提示标示符无效,以为是自己把列名写错了打开表的列,一个字母一个字母的比对,还是没有错 二.原因及解决 ...