zoukankan      html  css  js  c++  java
  • 一个JSP结果页面tomcat内存溢出

        如今,试验组的同事寻找新能源我看到一个奇怪的现象。一个tomcat应用,内只有一个简单的jsp页面,和这个jsp无论是什么页java代码(我想用这个jsp在她的网页测试server一对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" "http://www.w3.org/TR/html4/loose.dtd">
       <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问题更加苛刻。。。

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    docker容器安装使用
    hashMap学习
    spark运行方式及其常用参数
    java面试题基础
    大数据面试题
    java面试题
    Java四种线程池
    大数据
    pyspark 日期格式
    CMake error:System Error:No such file or directory CMake error:Could not open file for write in copy operation xxxx.ros_Config.cmake.tmp.
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4622958.html
Copyright © 2011-2022 走看看