请问这种情况是怎么造成的? resin + sql server

trls 2004-12-21 06:00:44
我写了个JSP的页面,其中用循环语句读库,显示一个列表(在循环的过程中还要读库,计算一个合计值)

然后我在该页面上按住F5不停的刷新该页面,不一会页面就没有反映了,感觉系统死掉了,此时直接通过sql server的企业管理器进入数据库是没问题的,感觉就是resin死掉了,重启resin该页面才可重新访问,请问这个是resin的问题还是sql server的问题?
...全文
75 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
子陌红尘 2004-12-22
  • 打赏
  • 举报
回复
呵呵,那就比较明显了,因为各个页面执行的操作锁定了部分资源,而这些资源的锁相互冲突了。

主要是因为页面执行时间过长,在执行过程中,可能执行到某一个步骤时,所需要的资源已经被其他应用过程锁定了。
子陌红尘 2004-12-22
  • 打赏
  • 举报
回复
数据库连接关闭是在catch{}finally{}中执行的吗?如果不是,一旦出现异常,则不会关闭数据库连接。
trls 2004-12-22
  • 打赏
  • 举报
回复
恩,的确,如果我在刷新页面的同时,用别的机器对其他页面进行操作,就很容易出现死锁,但是发生死锁的进程中的SQL语句每次都是不同的,而且每次刷新也是不同的,这又是如何造成的?
子陌红尘 2004-12-22
  • 打赏
  • 举报
回复
建议楼主在刷新界面的同时,通过SQL Server 2000企业管理器监视连接到服务器的进程和死锁信息,顺便查看一下Resin的连接池中的当前连接数。

我觉得问题肯定出现在应用程序中,而且跟数据库连接池有一定关系。
trls 2004-12-22
  • 打赏
  • 举报
回复
可是如果我减少该页中的一条比较复杂的循环语句,这个问题就不会出现,无论我怎么刷页面都没有问题.该循环语句中也不涉及任何的连库过程,所以我认为应该不是连接池的问题
trls 2004-12-22
  • 打赏
  • 举报
回复
是的,关闭库都是在finally中做的
那么如何才能避免此类的死锁呢?
guanshiyu123 2004-12-21
  • 打赏
  • 举报
回复
学习.
vinsonshen 2004-12-21
  • 打赏
  • 举报
回复
学习~~~
子陌红尘 2004-12-21
  • 打赏
  • 举报
回复
楼主使用了resin的连接池吧?应该是连接使用完毕之后没有释放,反复刷新导致连接池最大连接次数满了。检查JSP代码中连接相关部分,注意,一旦连接使用完之后应该在第一时间从程序中关闭掉。

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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