网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的范文:

 

标题 一个jsp页面导致的tomcat内存溢出的解决方法
范文
    今天新能测试组的同事找我看一个奇怪的现象。一个tomcat应用,里面只有一个单纯的jsp页面,而且这个jsp页面没有任何java代码(想用这个jsp页面测试在她的服务器上的一个tomcat的最大qps)。但是用loadrunner压测了几分钟之后,分配了1024m堆内存的tomcat居然包heap space outofmemory!这个页面的代码如下:
    代码如下:
    <%@ page language=java contenttype=text/html; charset=iso-8859-1
    pageencoding=iso-8859-1%>
    <!doctype html public -//w3c//dtd html 4.01 transitional//en >
    <html>
    <head>
    <meta http-equiv=content-type content=text/html; charset=iso-8859-1>
    <title>test</title>
    </head>
    <body>
    <p>hello world!</p>
    </body>
    </html>
    最初的分析是,一个jsp页面撑死了会产生一个对应的java文件,然后这个java文件编译成class文件,加载到内存里面去。也就是会有一个class对象会被加载到permgen space里面去。跟heap space是没有任何关系的。但是最后报的是对空间溢出。于是猜测肯定是每请求一次jsp页面就会生成一个对象。
    百度了一下,发现每请求一次jsp页面,会产生一个session对象。在tomcat的web.xml里面有这么个配置:
    代码如下:
    <session-config>
    <session-timeout>30</session-timeout>
    </session-config>
    也就是说每请求一次jsp页面,会产生一个session对象,并且这个对象30分钟后才过期。我们计算了下当时的qps是5000,也就是说每秒钟产生5000个session对象。每分钟产生300k个对象,session是个map对象,比较大,这样很快就会把内存撑爆。
    解决办法如下:
    1.在page指令里添加session=false。
    2.把session的过期时间设成0。
    现在她的loadrunner跑的很稳定。工作之后就再也没有用过jsp了,查jsp的问题还是比较费力
随便看

 

在线学习网范文大全提供好词好句、学习总结、工作总结、演讲稿等写作素材及范文模板,是学习及工作的有利工具。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/12 12:40:58