1.概述
在2012年10月8日对BSS系统进行检查时,发现有一个timeserv为overloadded状态。在10月08日对ds_crm_uop_crm1,ds_crm_uop_crm2,ds_crm_uop_crm3,进行调整后,timeserv运行状态恢复正常。
2012年10月9日数据库端反映数据库连接数过大,将上述三个数据库连接池进行如下调整。
2012年10月12日进行BSS系统巡检时,再次发现timeserv状态为overloaded状态,经查看数据库连接池后发现ds_crm_uop_crm4为overloaded状态。
2.问题分析
下面以ds_crm_uop_crm4为例进行分析:
查看ds_crm_uop_crm4连接池配置如下图
此时的timeserv的ds_crm_uop_crm4连接状态为:
此时的ds_crm_uop_crm4连接池已满,所以连接池现在处于overloaded状态。
数据源ds_crm_uop_crm4为大约50个server提供了数据库连接,但是在监控中发现,只有timeserv的ds_crm_uop_crm4数据库连接池处于超载状态。
3.建议
在这里解释下weblogic数据库连接池的工作原理。
应用连接数据库时,需配置数据源,然后将该数据源target到每个需要该数据库连接的server,这些server就可以使用该数据库连接,每个server启动后会建立一个独立的数据库连接池。即如果一个数据源的最小连接数为10,该数据源target到5个server,那么在这5个server启动时会建立5X10=50个数据库连接。
ds_crm_uop_crm4数据源为大约50个server提供了数据库连接,即这些server启动时为各自建立一个数据库连接池,如果直接修改数据库连接池配置后,所有使用ds_crm_uop_crm4数据源的server的连接池均更改,但是只有timeserv使用ds_crm_uop_crm4数据源连接数比较大,这样机会造成数据库端的连接数变大,造成性能浪费。
综合以上信息,为timeserv建立一个专用的数据库连接池,配置与ds_crm_uop_crm4相同,target目标仅为timeserv,这样可以使timeserv的数据库连接增大,而不会造成其他server的数据库连接池增大,造成数据库端连接的浪费。
在10月08日ds_crm_uop_crm1,ds_crm_uop_crm2,ds_crm_uop_crm3均出现过overloaded,另外配置3个数据源,基本配置分别与ds_crm_uop_crm1,ds_crm_uop_crm2,ds_crm_uop_crm3相同,但是target目标仅为timeserv,适当调整连接池配置,这样timeserv独享数据库连接,对该连接池的配置不会影响其他server,造成额外性能开销。
该贴被funny编辑于2014-2-20 11:27:32