繁体   English   中英

为什么连接没有超时?

[英]Why are the connections not timing out?

使用SQLServer 2008数据库在Websphere Application Server 7上运行我的应用程序。 当SQLServer为100%时,每个连接都挂起并填满连接池。 这导致每个线程也挂起。 10分钟后,日志填满了这个:

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秒。

我会压缩300sec后,每个连接都会抛出一个异常,然后让所有的线程都挂起来?

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

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

以下是连接超时的定义:

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

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

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

管理事务可以保持活动多长时间的参数称为事务超时 ,之后事务被标记为回滚。 但即使这个超时也没有取消使用该连接的线程,它只将其标记为仅回滚。 为了释放连接,您必须使用第三方工具(ITCAM可以取消服务器中的任何线程),或终止/删除数据库端的连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM