数据库连接未关闭这个原因我知道,还有其他什么原因吗?
 wingtrace(暮寒.烟灰.风化物)
“ 程序设计存在不合理的” 包括什么?听朋友说内存溢出能造成tomcat挂掉,大家知道什么原因吗?

解决方案 »

  1.   

    估计是程序设计,或配置的问题.
    作为jsp,servlet容器,Tomcat5.x已经很成熟了,不会无缘无故的挂掉.
      

  2.   

    应该是程序的问题。关TOMCAT何干啊?
    要不就是你的配置有问题。
      

  3.   

    用掉的连接一定要关,哪里取的,就要在哪里关,不要把ResultSet等东西传来传去使用/
      

  4.   

    我这里也发生类似的问题
    系统并访问比较大~
    对外只提供servlet接口
    TOMCAT用几天后,自己就挂掉,周期不定……
    我正为这事闹心呢!
      

  5.   

    我也觉得不该tomcat的事,应该是配置或者程序中有不当的地方,比如数据库连接用完没关。我十分想知道哪些问题能造成tomcat挂掉,为了保证tomcat的正常运行,在配置和编程时应该干什么,需要防止什么?欢迎大家讨论~~
    我再加点分,大家踊跃发言阿,来者有分`~
      

  6.   

    我有一次在jboss中部署bean时,总是发生错误,jboss退出,后来发现在bean中有个死循环,导致的内存溢出,你看看是不是也有类似的问题?
      

  7.   

    你可以调大tomcat中的数据库连接池的最大上限值试一下.
      

  8.   

    用到池连接的bean-----
    跟我这里有过的情况一样.运行Tomcat几天后.就挂掉了.打不开页面
    看看我描述的情况,是不是跟你一样55555555555
    我发的那个贴子.好像正好在改版时没了.用一个端口扫描工具看看.是不是java.exe打开的端口很多我观察了一下.Tomcat 启动后.一般有3个端口是打开的.如果有连接没有关闭.每一次查询就会打开一个端口
    ----
      

  9.   

    TO  coolmail5(滴血種花.花開血侭.落泪葬花.花沒淚乾)
    我这里用的是TOMCAT的连接池啊~
    而且,可以保证所有的连接都是关闭了的……
    郁闷……
    不得以,做了负载平衡,又加了台服务器,如果再不行,就准备换WEBLOGIC了……
      

  10.   

    whyxx(永远成不了高手) 说的没错,用了连接池,一定要把用过的连接再放回到池子里不是吗?
      

  11.   

    其实,用连接池,你在语句中应该还是直接调用的关闭方法的,但连接池会把你关闭的连接收集起来,以供下次调用(当然,连接池连接数量小于最大值)。
    毕竟写了这么久程序,这点还是知道的,所有的连接在try块,finally块中都有关闭……
      

  12.   

    那位朋友既了解RESIN又了解TOMCAT?
    不妨谈谈对这两个容器的看法!
    搬个凳子过来听~
    :)
      

  13.   

    有人常把问题推给tomcat,但我遇到的都是我程序的原因,我的情况多是配置文件不正确引起的,有时是程序写的不好,例如死循环等。
      

  14.   

    我来告诉你为什么,以前用tomcat4.0,使用连接池时就是漫无边际的等待,一点反映都没有,就是连接状态。出现这种问题肯定不是配置问题,否则会有错误提示。是tomcat的问题,下载一个tomcat5.0,然后使用他的web配置页面进行配置,肯定ok,有问题再找我
      

  15.   

    年级大的公猫,确实有些问题,曾经用低版本的,发现stackoverflow, 换个高版本的,同样的代码和配置,却发现竟然是因为有连接没有release掉
      

  16.   

    写程序出了问题,不能够只看结果,而应该逐步检查,到底在哪里程序做了什么
    你可以跟踪一下,看看到底在哪里出了问题
    最简单的就是,走一步,System.out.println()一下
      

  17.   

    配置文件server.xml出现问题的可能性最大,我也经常因为它而tomcat挂掉。
    由于tomcat5.0已不用配置server.xml,而直接支持war包的发布方式。
    所以,最好是打成war包发布你的程序。
      

  18.   

    如果这个问题出现在正在商业运行的系统上,问题还是你写的程序有问题,tomcat 对兵法的支持不是很好(其本来就不是为商业运行设计的),所以程序应当注意对资源的释放,光等着java虚拟机垃圾收集是不够的,当并发量一大,问题就出来了:数据库连接池死掉,线程池溢出。其实这也正是商业运行软件和教学程序的最大区别(菜鸟的程序是运行通过就ok,高手的程序是件艺术品)
      

  19.   

    to whw192(dreamfly):
    高手,CSDN-JAVA版又出了一个百年难得一见的高手~
    言下之意是我们因为使用TOMCAT出问题的都是菜鸟,都不懂得垃圾收集,内存回收了??
    不敢说,我写程序的时候你还很小,说实话,我学习JAVA的时候,我估计你可能都没听过它,我在网上给大家写TOMCAT配置文档的时候,你知不知道TOMCAT是什么都很难说~如果真的是高手,就不要泛泛的顾左右而言他,希望你说些有用的东西来,而不是一些武断的对楼主和回帖的朋友们进行分类的废话!!
      

  20.   

    tomcat的极限并发数在接近一百左右,resin的免费版在75个左右。程序运行几天tomcat挂掉可能跟你系统的负荷有关系,也可能是一些程序设计上的不合理。
      

  21.   

    既然访问量很大为什么还要使tomcat,考虑换weblogic吧
      

  22.   

    肯定是配置或者是程序的问题...tomcat 应该不会不出这样的错....
      

  23.   

    肯定是数据库连接方面的错误,我也遇到好几次,有机器本身的原因(重新启动一下tomcat就能解决),但造成这种原因应该是软件本身的问题,建议你使用weblogic配合oracle(小弟不才,也不知道说的对不对,只是把我遇到的问题说出来而已)
      

  24.   

    我做的绝对con、rs、stmt都释放了。
    还是有时候tomcat自己关了!
    我想不是tomcat的问题吧,既然人家公司能出这个!
    我也想知道呀!
      

  25.   

    我把连接池的最大数据库连接数增大后tomcat已经连续3天没挂了,大概原因在这里今天结贴,顺便贴点资料供大家参考
    数据库连接池概述:
    数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。
    数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。
    数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。数据库连接池的最小连接数和最大连接数的设置要考虑到下列几个因素:
    1) 最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费;
    2) 最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。
    3) 如果最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。
    下面是一些参数的说明:
    其中:
    1) path  指定路径,这里设定的是$CATALINA_HOME/webapps下的quality目录;
    2) docBase 文件根目录。
    3) reloader  当网页被更新时是否重新编译。
    4) maxActive 连接池的最大数据库连接数。设为0表示无限制。
    5) maxIdle  数据库连接的最大空闲时间。超过此空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制。
    6) maxWait 最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
    7) removeAbandoned 回收被遗弃的(一般是忘了释放的)数据库连接到连接池中。
    8) removeAbandonedTimeout 数据库连接过多长时间不用将被视为被遗弃而收回连接池中。
    9) logAbandoned 将被遗弃的数据库连接的回收记入日志。
    10) driverClassName JDBC驱动程序。
    11) url   数据库连接字符串