首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么连接没有超时?

问为什么连接没有超时?
EN

Stack Overflow用户
提问于 2012-08-01 21:46:07
回答 2查看 2.1K关注 0票数 1

在带有SQLServer 2008数据库的Websphere application Server7上运行我的应用程序。当SQLServer达到100%时,每个连接都挂起并填满了连接池。这会导致每个线程也挂起。10分钟后,日志中会填满以下内容:

代码语言:javascript
复制
00000042 ThreadMonitor W   WSVR0605W: Thread "WebContainer : 11" (00000049) has been active for 742352 milliseconds and may be hung.  There is/are 14 thread(s) in total in the server that may be hung.

连接池正在使用JTDS,并将超时设置为300秒。

我认为在300秒之后,每个连接都会抛出一个异常,然后所有的线程都会挂起。

EN

回答 2

Stack Overflow用户

发布于 2012-08-02 08:03:28

为什么连接会在300秒后抛出异常?如果connection对象正在使用中,它将继续处于活动状态。

还要指定您引用的确切超时属性?

票数 2
EN

Stack Overflow用户

发布于 2012-08-03 02:45:01

下面是Connection Timeout的定义

此值指示当空闲池中没有可用连接且无法创建新连接时,连接请求等待的秒数。这通常是因为特定连接池中的连接值已达到最大值。

例如,如果连接超时设置为300,并且最大连接数都在使用中,则池管理器将等待300秒以使物理连接变为可用。如果物理连接在此时间内不可用,池管理器将启动ConnectionWaitTimeout异常。

所以,它不会让“所有线程都挂起”,它只在300秒后告诉你池中没有空闲的连接,所以它不能给你一个。

控制事务可保持活动状态的时间长度的参数称为transaction timeout,超过此参数后,该事务将被标记为回滚。但是,即使此超时也不会取消使用该连接的线程,它只是将其标记为仅限回滚。为了释放连接,您必须使用第三方工具(ITCAM可以取消服务器中的任何线程),或者从数据库端终止/断开连接。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11760661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档