设为首页 收藏本站
查看: 396|回复: 0

[经验分享] Tomcat Session未过期导致的内存泄漏假象

[复制链接]

尚未签到

发表于 2017-2-4 08:32:21 | 显示全部楼层 |阅读模式
在对Tomcat的多次压力测试中,在配置-Xmx512m情况下,发送25万多条,就会导致内存耗尽,频繁Full GC(最后几乎不能再响应任何请求,一直在Full GC),说明内存没有释放。尝试了Tomat 6.0.20和7.0.5,行为一致。开始猜测如下两种可能

1. 内存泄漏
2. 每次请求都消耗了一定资源(约2.5k),需要等待session过期才能释放。

第一种可能性只是猜测,毕竟Tomcat已经久经考验。接下来,试图证实第二种可能性。

使用ApacheBench压测Tomcat 7.0.5。请求的是一个小JSP文件。

之前的多次测试,确认在AMD Tourion双核1.8G Hz CPU, 2G内存上,5个线程并发能达到最大的吞吐。

Tomcat的JVM启动参数:

-server -Xms1024m -Xmx1024m -Xloggc:../gc.log

在另一台Ubuntu(Intel T4400,4G)上使用如下命令执行压测:

ab -k -n 500000 -c 5 http://192.168.0.100/service/index.jsp

从gc日志上看,内存没有耗尽。除了启动后的几秒钟内,发生了一次Full GC,之后很长一段时间都没有发生Full GC(因为-Xms配置成了和-Xmx一样大的关系)

GC历史:

3.965: [GC 12278K->1528K(1034048K), 0.0431287 secs]
4.009: [Full GC 1528K->1491K(1034048K), 0.1296874 secs]
41.157: [GC 88915K->20402K(1034048K), 0.0913074 secs]

…  期间内存消耗持续增长,到此,50万请求发送完成
157.368: [GC 895732K->853672K(1021824K), 0.3552454 secs]

…  约半小时后(正好是默认的Session过期时间),开始回收内存
1899.550: [GC 915836K->863741K(998592K), 0.2737393 secs]
3604.205: [GC 912483K->864412K(1017152K), 1.1948597 secs]

    请求发送完成1小时后,发生Full GC,回收了800M左右的内存
3605.400: [Full GC 864412K->53546K(1017152K), 1.5894679 secs]

… 在之后的7小时内,发生若干次Full GC,最终,内存消耗跌回8M以内。
25209.237: [Full GC 7627K->7627K(1017536K), 0.3135709 secs]


观察总结:

内存在半小时后,开始释放。一小时后,触发Full GC,回收800M,之后的几个小时内,几乎是每小时定时Full GC一次(估计是服务器版的JVM的某种GC算法).

推论:

每次对Tomcat请求,都会积累延时释放的内存资源。相信就是Session相关资源(尽管所有测试请求都只是简单地打印出请求响应头)。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-337183-1-1.html 上篇帖子: 六、Tomcat服务器的Web安全的解决方法 下篇帖子: tomcat连接池的配置与使用(mysq
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表