( 对数据库连接或网站管理有经验的朋友,您更要耐心点看我的问题啊,谢谢您了! )
最近维护一个新网站,但本人对的网站的管理很陌生。现在有这么个情况,请大家帮着分析一下原因。重启所有服务(apache、weblogic,orcale),完成可以正常访问,可是几个小时后(大概六、七个小时),网站就不能再访问,就卡死了。我已经观察了几天,虽然网站运行中,可以看到weblogic服务那个dos窗口上看空指针异常(那人异常是用户会话超时引起的,所以可以忽略),但每次网站卡死的时候,weblogic日志没有任何异常。这时候,我用select count(*) from v$process查看时,都在110到135之间( 数据库允许的最大连接数设置的是500), 查看v$session用户连接也是一百多了。
急切想知道是什么原因引起的? 是程序中没有关闭连接连接? 还是其他?
另说明一下,目前网站用的weblogic10, orcale10g,都是破解版的(正版的还在购买商议),会是因为非正版中有什么机关限制? 呵,这是我猜想的。
网站是采用的ssh框架。 但个别模块中使用ajax时用到了jdbc,使用hibernate操作数据的关半连接几乎都使用了try....finally{
SessionFactoryUtils.releaseSession(session, sessionFactory); }(我都曾也if (session != null) session.close();这样半闭,全没什么效果 ,后来又改回来了), 这样,关闭问题上都交给hibernate,应该问题不大了吧。 至于jdbc方面的,我现在给修改成类似如下面的代码,应该也没问题(呵,我修改的嘛,自以为了),大家看看:
SessionFactory sessionFactory = null;
Connection conn = null;
Statement stmt = null;
Session session = null;
String sql ="sql....";
try {
sessionFactory = (SessionFactory) SysTool.getConext().getBean("sessionFactory");//SysTool.getConext()得到一个上下文
session = sessionFactory.openSession();
conn = session.connection();
stmt = conn.createStatement();
stmt.executeUpdate(sql);
} catch (Exception ex) {
System.out.println("修改信息出错:" + ex.toString());
} finally {
Toolkit.closeJdbcArgs(null, stmt, conn); //一个专用于关闭。所传参数不为空时,都会调用他们的close();
SessionFactoryUtils.releaseSession(session, sessionFactory);
}
真希望,能尽快搞定这个问题。
多谢大家能出谋划策!