• 主页
  • 基础类
  • 应用实例
  • 新技术前沿

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

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

然后我在该页面上按住F5不停的刷新该页面,不一会页面就没有反映了,感觉系统死掉了,此时直接通过sql server的企业管理器进入数据库是没问题的,感觉就是resin死掉了,重启resin该页面才可重新访问,请问这个是resin的问题还是sql server的问题?
...全文
41 点赞 收藏 9
写回复
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代码中连接相关部分,注意,一旦连接使用完之后应该在第一时间从程序中关闭掉。
回复 点赞
发动态
发帖子
MS-SQL Server
创建于2007-09-28

1.4w+

社区成员

25.3w+

社区内容

MS-SQL Server相关内容讨论专区
社区公告
暂无公告