连接超时:
解释:连接超时是指,当对指定连接池进行请求时,池中没有可用连接(连接全部被使用,或者数据库请求超时),当请求时间到达指定之间时未响应,那麽这个时候就会产生超时异常,通过日志可以发现。指定间隔(以秒为单位)
结果:这个间隔时间过后连接请求超时并抛出 ConnectionWaitTimeoutException。
说明:达到连接特定连接池的最大值(最大连接数)或者数据库请求超时,等待是必需的。例如,如果连接超时设置为 300 并且达到了最大连接数,则池管理器为可用的物理连接等待 300 秒。如果物理连接在此时间内不是可用的,则池管理器抛出 ConnectionWaitTimeoutException。它通常不会重试 getConnection() 方法,因为如果必需更长的等待时间,您应该设置连接超时设置为更高的值。因此,如果应用程序捕捉了此异常,那么管理员应该复查应用程序的期待用法,并相应地调整连接池和数据库。
注:如果连接超时设置为 0,则只要必需,池管理器就会一直等待直到分配一个连接为止(这在连接数下降到最大连接数值以下时发生)。
如果最大连接数设置为 0,其允许无限多个物理连接数,则将忽略连接超时值。
连接超时设置:
数据类型: 整型
单位: 秒
缺省: 180
范围 :0 到最大整数
好处:连接超时的设置,可以让我们发现哪些程序点有响应速度问题,可能是数据库查询语句问题,也有可能是程序逻辑死循环,再有可能就是数据库表结构需要优化,还有可能是最大连接数到达最大值。
未使用超时
解释:未使用的超时指池中的物理连接空闲未使用的时间间隔,每隔指定时间,系统会为连接标记,帮助收集时间在维护过程中进行关闭。未使用的超时应该小于实效超时时间,并且其以最小连接数为标准,当连接数超过最小连接数时,其才起作用。以秒为单位
说明:这个参数指定一个空闲连接在连接池中能够存活的最大时间。因为在连接池中保持连接会消耗系统资源,因此超过最小连接数的空闲连接会被定时清除。(注:当连接数没有超过最小连接数时,该项不起作用)未使用超时设为0时就不清除空闲连接。
数据类型: 整型
单位: 秒
缺省 :1800
范围 :0 到最大整数
好处:未使用超时的设置,帮助我们关闭不必要的空闲连接,释放系统资源,并且减少数据库开销。根据现场环境使用情况,我们可以根据系统访问频繁程序,来定制合理的未使用超时,如果过小,当访问频繁程度大时,总需要重新创建,如果过大,当访问频繁程度不大时,连接池又空闲占用过多。
最小连接数
解释:最小连接数是指当前连接池要保留的最小物理连接,其决定未使用超时维护机制的下限,连接池的创建不是根据最小连接数而特意创建,而是根据用户请求而创建,系统会一直维护最小的连接数目。
说明: 最小连接数使应用服务器保持一定数量的物理连接,利用应用服务器维护机制,合理分配服务器资源。当应用程序访问频繁,但访问人数少的情况下,最小连接数的合理配置,可以将有效的资源进行充分利用,满足特定应用需求。
数据类型: 整型
单位: 个
缺省 :1
好处:最小连接数使应用服务器保持一定数量的物理连接,利用应用服务器维护机制,合理分配服务器资源。当应用程序访问频繁,但访问人数少的情况下,最小连接数的合理配置,可以将有效的资源进行充分利用,满足特定应用需求。
最大连接数
解释:最大连接数是指当前连接池中允许创建的最大物理连接数,当到达指定值后,将不允许创建物理连接。和连接超时相对应,当达到最大值后,连接请求将等待,直到池中有空闲连接为止,否则报连接超时错误(ConnectionWaitTimeoutException)。当使用集群机制时,会同时存在多个相同连接池,这个时候需要考虑最大数量的设置。
好处:最大连接数可以有效控制创建物理连接的数量,连接池的大小影响着服务器资源的占用情况,若连接池过大,则会长期占用服务器可利用资源,若连接池过小,无法满足现场环境应用高负载使用压力。最大连接数的设置应根据TPV观测数据进行合理配置。
数据类型: 整型
单位: 个
缺省 :10
获得时间(收集时间)
解释:收集时间是连接池维护机制的核心,是指每次维护连接池的时间间隔。其有两个维护指标,分别为未使用超时和时效超时,其值应该小于两个指标中的任何一个。每一次维护周期中,连接池都会将连接池中超时的物理连接关闭,以减少系统占用资源。
说 明:连接池中的连接由一个定时运行的线程进行维护。这个参数就是指定运行连接池维护线程之间的间隔。例如,如果“获得时间”设置为60,则池维护线程每 60秒运行一次。当池维护线程运行时,它废弃所有未使用的连接(未使用时间长于“不使用超时”中指定的时间值),直到它到达最小连接数中指定的连接数。池维护线程还废弃所有活动时间长于“时效超时”中指定的时间值的连接。获得时间间隔还影响性能,因为更短的间隔意味着池维护线程将更频繁的运行并降低性能。要禁用池维持线程,“获得时间”设置为0,或“不使用超时”和“时效超时”都设置为 0。
好处:合理的收集时间设置,是帮助我们关闭不必要的连接,节省系统资源占用的有效途径。收集时间设置不易过大,因为时间间隔过长,会使很多未被使用的物理连接持续占用资源。若收集时间过小,则频繁的维护会带来很多系统开销,连接池的主要精力都放到了维护上。
时效超时
解释:实效超时指关闭物理连接的时间间隔,这个值是指到达指定的时间后,关闭满足时间条件的物理连接,若这个物理连接未使用,则直接关闭,若这个连接正在使用,则当前事务结束后,关闭此连接。这个值不受最小连接数的影响,若没有新创建的连接,此机制会关闭连接直到为0。
说明:这个参数指应用在获得连接之后而不使用它的最大空闲时间。如果在放回到连接池之后,应用再去使用这个连接就会报StaleConnectionException异常。这个参数对事务处理中的连接不生效。时效超时设为0时这个参数就不生效。这里有一点要注意,虽然WebSphere应用服务器可以通过设置这个参数可以回收应用程序中忘记释放的数据库连接,但是在大并发量用户的时候还是会导致数据库连接不够用的异常。因此,尽量保证应用程序中使用完数据库连接之后及时放回到连接池中去。这个值不受最小连接数的影响,若没有新创建的连接,此机制会关闭连接直到为0。
好 处: 时效超时的设置,是为了方式应用程序或者数据库造成的数据库连接持续占用,可能导致的原因包括程序逻辑错误,数据库宕机导致的错误等。还有一种情况为人为导致,就是若某个用户持续占用一个资源不放,会导致其他用户无法访问。所以时效超时的设置,是对不合理使用应用,或者链接错误等进行强行关闭,保证程序的稳定性和持久性。