关于tomcat调配的两个问题

来源:互联网 发布:windows电脑怎么截屏 编辑:程序博客网 时间:2024/04/28 12:31

1。JVM虚拟内存紧张的问题
     使用java虚拟机的软件一般都会为jvm开辟一定数量的内存。Tomcat猫默认开辟的内存数量为64MB,这对一般的应用应该足够了,但是在实际的应用中,如果用户的请求数量比较大,而且大量的数据保存在内存中,比如用户有请求一个非常大的数据表,内存远远不够用,就会造成客户端请求变慢甚至得不到响应。这时我们需要增大JVM内存,假设服务器的内存配置为2048MB,则在Tomcat的启动批处理命令中添加如下代码:
               java -Xms528m -Xmx1024MB
     这样在启动Tomcat时会为其开辟582M的内存,当请求超过528MB时,系统会再为它分配内存至1024MB。

2。数据库垃圾连接回收
      通常连接数据库代码如下,依次创建连接、声明、记录集:
        Connection conn=DriverManager.getConnection(url,username,password);
        Statement   stm=conn.createStatement();
        ResultSet   rs=stm.executeQuery(sql);
     而关闭的顺序和方式如下:
        rs.close();
        stm.close();
        conn.close();
    但是在实际的应用当中,通常出现某一对象未关闭的情况,原因可能是显示的没有关闭,也可能是隐式的没有关闭,如ResultSet对象的反复时候可能会造成隐式的未关闭。这时候可以查看数据库表v$open_cursor,可以看到没有关掉游标的SQL语句操作。由于java类不自动回收数据库连接,所以会造成游标占满,这时就等于数据库死掉了为了防止这种情况,要在finalize函数里添加如下代码以保关闭数据库连接万无一失:
       protected void finalize()
        {
              try{
                   if(getConn()!=null&&!getConn().isClosed())
                   {
                        rs.close();
                        stm.close();
                        conn.close();
                   }
                }catch(SQLException  e){}
      }

3.Tomcate性能调配
        对于几千个用户(比如5000用户)的服务站点来说,各自的调配参数需要相互配合,这主要格局连接吃的数量来调配的,当然连接池的数量高也要求你的服务器有足够的性能。
      比如,数据库连接池数量为500,则Tomcat配置如下:
             <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
                port="8000" minProcessors="5" maxProcessors="1000"
                enableLookups="true" redirectPort="8443"
                acceptCount="1000" debug="0" connectionTimeout="20000"
                useURIValidationHack="false" disableUploadTimeout="true" />
      上面所示的配置表示可以同时接受2000个用户的请求,超时为20s。

                                                                                               (摘选自课本)                               

原创粉丝点击