急救:ORA-00018: maximum number of sessions exceeded

zyhowe 2010-06-02 11:39:53
办法想了N多个,还是不断的出现。
比如增加process,sessions数

连接池使用DBCP\WEBSPHERE自带都出错

数据库操作类代码:
public static Connection getConnection() throws Exception {
DataSource dataSource = null;
Connection conn = null;
try {
dataSource = ConnectionPoolListener.dataSource;
} catch (Exception e) {
throw e;
}
return conn;
}

public static List query(String cSql) throws Exception {
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
List list = null;
try {
conn = getConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery(cSql);
RowBean rb = new RowBean(rs);
list = rb.getList();
} catch (ex) {
throw ex;
} finally {
if (rs != null) {
try {
rs.close();
} catch (Exception e)
}
rs = null;
}
if (stmt != null) {
try {
stmt.close();
}catch (Exception e) {
}
stmt = null;
}
if (conn != null) {
try {
conn.close();
} catch (Exception e) {
}
conn = null;
}
}
return list;
}

public static synchronized void execute(String cSql) throws Exception {
Statement stmt = null;
Connection conn = null;
try {
conn = getConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
stmt.executeUpdate(cSql);
} catch (Exception ex) {
throw ex;
} finally {
if (stmt != null) {
try {
stmt.close();
}catch (Exception e) {
}
stmt = null;
}
if (conn != null) {
try {
conn.close();
} catch (Exception e) {
}
conn = null;
}
}
}
...全文
625 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
longlong2123 2011-07-28
  • 打赏
  • 举报
回复
我也遇到了这问题!
jianghg2009 2010-06-09
  • 打赏
  • 举报
回复
好贴,我顶了~~~~
zyhowe 2010-06-09
  • 打赏
  • 举报
回复
持续等待高手
East271536394 2010-06-08
  • 打赏
  • 举报
回复
持续等待高手
baiyaome 2010-06-08
  • 打赏
  • 举报
回复
关注!
zyhowe 2010-06-08
  • 打赏
  • 举报
回复
持续等待高手
xieshengjun2009 2010-06-08
  • 打赏
  • 举报
回复
没碰到过,给你吆喝一下。
lizhongyi188 2010-06-08
  • 打赏
  • 举报
回复
好帖子 先顶下!
zyhowe 2010-06-08
  • 打赏
  • 举报
回复
下面这样做,可不可以?

出现session溢出可能的情况包括:
1、 共享服务器模式(已排除)
2、 多线程访问没有控制好
3、 频繁刷新、并发没有限制.
总之,就是1个connections对应1个processes,1个connections对应多个sessions。 对于一个数据库用户来说,Sessions就是并发数,sessions溢出,就是并发数超过系统限制,比如oracle max session、操作系统并发数。

改进:
1、 Synchronized控制获取连接、数据更新
2、 增加max sessions: ALTER SYSTEM SET SESSIONS=300 SCOPE=SPFILE;

注意: 1)默认sessions=processes*1.1+5,此处修改建议sessions=processes*1.5
2)process修改时同步改变sessions,所以先改process,后改sessions
3、 用户并发限制: Alter system set resource_limit=true;
create profile test_prof limit sessions_per_user 30 #大于等于数据库连接池,小于等于max session减去系统占用
alter user test profile test_prof;
zyhowe 2010-06-03
  • 打赏
  • 举报
回复
maxactive设大不是出错的更快吗?现在是连接池根本没用,无论DBCP还是WEBSPHERE自带
laker_914 2010-06-03
  • 打赏
  • 举报
回复
呵呵,你的maxactive还可设大吗?

zyhowe 2010-06-03
  • 打赏
  • 举报
回复
select * from v$resource_limit

1 processes 140 140 150 150
2 sessions 170 170 170 170

现在不是偶尔的出,而是一压力测试就立即报错,
连接池设的maxactive可是50,maxidle=20,maxwait=10000
zyhowe 2010-06-03
  • 打赏
  • 举报
回复
早试过了,加sessions
laker_914 2010-06-03
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20030822/17/2178156.html

这个你有看过吗?很早的贴子了!
  • 打赏
  • 举报
回复
在使用 netstat 命令的同时,看一下有一列是 TCP 状态的,比如 ESTABLISHED, TIME_WAIT, CLOSE_WAIT

如果本地端口与 1521 端口有很多都是 CLOSE_WAIT 的话,那说明 JDBC 连接有异常了。

一般来说与 Oracle 正常的 JDBC 连接几乎不会出现 CLOSE_WAIT 状态,只会有 ESTABLISHED 和 Connection close 掉后的 TIME_WAIT 状态。
  • 打赏
  • 举报
回复
在挂掉时,在 Java 程序运行的那台机器上用 Linux 命令看一下 TCP 的连接数:

netstat -anp | grep :1521 | wc -l

如果服务器是 Windows 的话,用 netstat -ano | find ":1521" 列出来后数一下有多少个
crazylaa 2010-06-03
  • 打赏
  • 举报
回复
1.你的getConnection代码看来看去总觉得少了点什么。。。

2.你的execute方法为什么要sync??? DML语句oracle会自己对数据表加锁,你这里sync反而降低了效率,导致来一个DML就要新建一个连接(如果之前连接没有释放的话),难道你是希望所有的DML语句都顺序执行?

1如果是正确的那我不管,但是2的sync完全用不着,去掉试试!
  • 打赏
  • 举报
回复
建议在 64 位的大内存的 Linux 系统上安装 Oracle,我们测试了一下可以达 1200 多个客户端连接的。
zyhowe 2010-06-03
  • 打赏
  • 举报
回复
数据库最大有改的,测试环境170,正式350都一个样

说DBCP有BUG,用WEBSPHERE自带的却也有问题,难道OJDBC14.JAR问题?ojdbc14.jar可是ORACLE10g目录下的


izard999 2010-06-03
  • 打赏
  • 举报
回复
是有这个问题.! 以前拿ssh用c3p0整一样的.. 当时用的mysql数据库, 无论我怎么改,只要超过30个就挂了.!
LZ有没有去改数据库的最大连接数呢.?
加载更多回复(2)

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧