jsp连sqlserver,sqlservr.exe不断增大

时间:2021-01-22 17:10:02
大家好,我是用jdbc连接sql2000的数据库,并用tomcat做连接池,现发现sqlservr.exe和tomcat.exe会不断增大.具体是每天只有几人人登录这个用jsp做的网站,但是一个月下来sqlservr.exe增大了100M,本来在30M,现在变成了100M了,tomcat也变成50M了.这样下去,如果登录的用户到1000个的话,那不是要隔一段时间重启,不知是什么原因.我写的程序大多像下面这样写的:
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.util.*,java.sql.*,java.net.*" %>
<%@ page import="javax.naming.*"%>
<%@ page import="javax.sql.*"%>
 <% 
   Context ctx=null;
   Connection conn=null;
   Statement statement=null;
   ResultSet rs=null;
   String sql="";
   try
   {
    ctx=new InitialContext();
    if(ctx==null)
       throw new Exception("没有匹配的环境");
    DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/sql2000");
    if(ds==null)
       throw new Exception("没有匹配数据库");
     
    conn=ds.getConnection();
   
    sql="select * from users";
    statement=conn.createStatement();
    rs=statement.executeQuery(sql);
    if (rs.next())
    {
    //做一些东西
    %><%=rs.getString("name")%>
    <%
    }
     else
     {
      //做一些
     
     }
    rs.close();
    rs=null;
    statement.close();
    statement=null;
  
  %> 
   
   
<% //释放数据库连结
 if (rs!=null)
   {rs.close();
    rs=null;
   }
 if(statement!=null)
   {statement.close();
    statement=null;
   }
 if(conn!=null)
  {conn.close();
   conn=null;
  }
 if(ctx!=null)
  {
   ctx.close();
   ctx=null;
  }
  }catch (Exception e)
  {
   out.println(e.getMessage());
   }
finally
   {
   
    if (rs != null) {
      try { rs.close(); } catch (SQLException e) { ; }
      rs = null;
    }
    if (statement!= null) {
      try { statement.close(); } catch (SQLException e) { ; }
      statement = null;
    }
    if (conn != null) {
      try { conn.close(); } catch (SQLException e) {; }
      conn = null;
    }
    if (ctx != null) {
      try { ctx.close(); } catch (Exception  e) {; }
      ctx = null;
    }        
   }
    %> 
    
    
     
     

8 个解决方案

#1


up

#2


up

#3


SQL Server 使用内存的增长是正常的,通常是由于自动的缓存造成的。SQL Server 的默认设置是最多使用 60% 左右的物理内存。

Tomcat 达到 50M 也没什么,几乎所有的JAVA技术应用服务器都会和内存过不去。

#4


这台服务器是dell的,现内存配置是512M.那现在运行在480M,我感觉很不安全,就是物理内存很快会被消耗掉.我想问一下,如果这种情况是正常的,如果需要同时有3000个人在线的话,那配置内存需要多少,1G差不多了?还有这个是否跟sql2000或tomcat有关,如服务器换用orlace,WEB服务器换用weblogic这种情况会不会改善.

#5


内存大小最终取决于具体的应用,不能一概而论。

3000 人如果同时在线是一个非常大的访问量,大多数应用达不到这种程度。如果只有一台机器,各方面都需要处理得非常好,能够处理这类问题的人,很少有空来这儿发贴子。:)

#6


SQL server就是吃内存的。这跟JSP是没有关系的。
即使你有2G的内存也会被慢慢的吃光。。呵呵~~
不要害怕。

#7


内存使用的增加是正常的,但是应该不会随着人数增加线性的增长

#8


在使用过程是好像就是打开新页面时就会有内存增加,而在一段时间同时打开同一个页面不会增加,如果用户量上去的话,如果他们访问差不多的页面,因为这些都是都是在缓存里面,可能不会线性增大.我想这样理解是否正确.
我想如果我要正确地做:
1.需要定期进行关闭和重启
2.需要增加物理内存.
是不是这样呢

#1


up

#2


up

#3


SQL Server 使用内存的增长是正常的,通常是由于自动的缓存造成的。SQL Server 的默认设置是最多使用 60% 左右的物理内存。

Tomcat 达到 50M 也没什么,几乎所有的JAVA技术应用服务器都会和内存过不去。

#4


这台服务器是dell的,现内存配置是512M.那现在运行在480M,我感觉很不安全,就是物理内存很快会被消耗掉.我想问一下,如果这种情况是正常的,如果需要同时有3000个人在线的话,那配置内存需要多少,1G差不多了?还有这个是否跟sql2000或tomcat有关,如服务器换用orlace,WEB服务器换用weblogic这种情况会不会改善.

#5


内存大小最终取决于具体的应用,不能一概而论。

3000 人如果同时在线是一个非常大的访问量,大多数应用达不到这种程度。如果只有一台机器,各方面都需要处理得非常好,能够处理这类问题的人,很少有空来这儿发贴子。:)

#6


SQL server就是吃内存的。这跟JSP是没有关系的。
即使你有2G的内存也会被慢慢的吃光。。呵呵~~
不要害怕。

#7


内存使用的增加是正常的,但是应该不会随着人数增加线性的增长

#8


在使用过程是好像就是打开新页面时就会有内存增加,而在一段时间同时打开同一个页面不会增加,如果用户量上去的话,如果他们访问差不多的页面,因为这些都是都是在缓存里面,可能不会线性增大.我想这样理解是否正确.
我想如果我要正确地做:
1.需要定期进行关闭和重启
2.需要增加物理内存.
是不是这样呢