谢谢lzp的回复。代码是以前的开发人员写的。
我奇怪的是,为什么运行了一年多都没出现这个问题,现在怎么会突然有这个问题冒出来,这是怎么回事,想不通.......

解决方案 »

  1.   

    拿就要仔细读一下代码啦,毕竟这种问题不是靠猜才能知道原因。而且,当初开发时,系统的环境、用户的访问情况等也肯定和现在大大不同了,如果不是代码本身的bug,那就是性能方面的了。
      

  2.   

    到后来有太多的线程sleeping是怎么回事,300多个,还有4、5个running,这个正常吗
      

  3.   

    看看是那个进程占用最多内存喽,kill
      

  4.   

    kill和killall不掉 oracle的进程,如用kill -9 强行删除,内存是让出来了,可oracle再也不能用了,此时只得重启就算是kill起了作用,难道将来系统就不能独立的正常运行下去,非得时不时的kill一下么,郁闷啊!
      

  5.   

    是代码本身的bug,看看/proc下的动态显示和oracle下的log
      

  6.   

    用top发现Java线程占用了大部分的内存!
      

  7.   

    oracle运行半小时就自动锁死,用top发现是其狂吃内存,直到吃完为止。------------
    如果只是锁死的话不一定会狂吃内存的啊,吃内存肯定是代码问题,
      

  8.   

    应该是代码问题,抓出有问题的SQL
      

  9.   

    http://www.eygle.com/index-special.htm
    看Statspack专题
      

  10.   

    “kill和killall不掉 oracle的进程,如用kill -9 强行删除,内存是让出来了,可oracle再也不能用了,此时只得重启,就算是kill起了作用,难道将来系统就不能独立的正常运行下去,非得时不时的kill一下么,郁闷啊!”根据这段话,可以得出一个结论:这个进程不是用户程序进程。
      

  11.   

    现在关闭了有问题的程序,sleeping的进程数维持在低数目,系统锁死的状况消除。再来一步步查有问题的代码。谢谢大家的帮助,小弟不尽感激!
      

  12.   

    估计是连接没有被及时关闭 conn.close()