WEBLOGIC连接池配置

Posted 厦开系统联盟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WEBLOGIC连接池配置相关的知识,希望对你有一定的参考价值。

前言(敲黑板)

你是怎么配置WEBLOGIC连接池的?

它应该如何配置?


一、问题来了

某项目非功能测试时碰到了一个奇怪的拐点现象,随着Vuers的增加,响应时间变化不大,但TPS却掉头向下,查看压力机、服务器的资源都没有瓶颈。应用程序逻辑处理存在瓶颈?但是现测试的版本在前些天测试时,最高TPS却是现如今拐点TPS的2倍多,程序版本并没变化。

那问题原因出在哪呢?

由于现象诡异,为了尽快找出问题原因,各路人马分头行动:

开发人员:跟踪日志、检查代码;

测试人员:检查测试脚本、压力机运行情况;

系统管理员:跟踪服务器的使用情况;

DBA:检查数据库的运行情况等。

WEBLOGIC连接池配置

开发人员查看日志,发现对ORACLE数据库的访问耗时,很多交易从之前的1到2ms延长到了10ms以上。数据库出现了瓶颈?可是DBA在数据库中跟踪SQL运行情况,发现SQL耗时都是1ms左右,和前些天测试的耗时几乎无差,且数据库服务器的资源使用率低于3%,不存在瓶颈,不像是数据库的问题。

那日志为何显示对ORACLE数据库的访问耗时变长呢?

有没有遗漏了某些环节?

对ORACLE数据库的访问,除了SQL执行耗时外,还有和数据库的连接耗时,应用和数据库的连接采用的是WEBLOGIC的连接池,难道是连接池有问题?

登录WEBLOGIC控制台,监控连接池情况:


问题终于浮出水面

连接池超载,大量的连接等待,从而导致了访问ORACLE耗时变长,如下图:

(点开图片,更清晰)

WEBLOGIC连接池配置


二、连接池配置规则

问题原因找到了,那我们应该如何配置连接池呢?

首先要获得系统的非功能指标:TPS、交易响应时间、AP服务器的SERVER数量等信息:

WEBLOGIC连接池配置

 

计算公式如下:

比如系统的TPS为100,交易响应时间为0.3s,共有3台AP服务器,每台服务一个SERVER,则连接池容量=2*100*0.3/3=20。


我们知道在WEBLOGIC连接池中有初始容量、最大容量、最小容量三个值的配置:

WEBLOGIC连接池配置


WEBLOGIC连接池配置


它们和连接池容量是什么关系呢?

由于在数据库中创建连接是很消耗资源的操作,因此建议根据需求容量提前创建好连接,避免新创建连接的消耗。

但是连接池也不是设置越大越好,每一个连接是需要消耗一定的系统资源,比如每个连接至少需要消耗30M左右的数据库服务器内存,且数据库也有最大连接数的限制,具体设置多少,参见ORACLE数据库的processes参数。


ORACLE数据库的总连接数,建议不要超过服务器CPU个数*20,或是processes*0.8,二者取小的值:min(CPU个数*20,processes*0.8)。由于ORACLE自身还有一些系统连接,以及其他客户端的连接,因此WEBLOGIC连接池最好不要超过建议连接数的半数,即min(CPU个数*10,processes*0.4)。如果前面计算的连接池容量超过了数据库服务器CPU个数*10或processes*0.4,建议扩容数据库服务器的CPU数量或是调整数据库的processes参数。


建议

依照此原理,连接池配置建议是“初始容量”和“最小容量”都等于计算得到的“连接池容量”,“最大容量”为“连接池容量”的1到2倍,至于是1倍、1.5倍、还是2倍,取决于服务器的CPU数量,如果CPU较多可以设置为2倍,如果CPU资源有限建议设置为1倍。


根据以上公式,计算出前面测试出现问题的系统的连接池容量为40,因此调整初始容量=最小容量=40,最大容量=80,重新进行测试,监控连接池,统计信息如下:

WEBLOGIC连接池配置


三、回顾

连接池设置的是否合理将会对系统处理能力、服务器的负载产生较大影响,因此建议综合考虑服务器的配置、TPS、交易响应时间等情况,合理设置连接池容量。以上连接池配置公式,让我们再一起重温下吧:

WEBLOGIC连接池配置

WEBLOGIC连接池配置

大家记住了吗?

厦门开发中心测试与推广支持处 系统与非功能小组出品 

编辑:方妍






以上是关于WEBLOGIC连接池配置的主要内容,如果未能解决你的问题,请参考以下文章

Druid连接池配置多数据源

WEBLOGIC连接池配置

druid连接池 SPRING怎样实现配置数据源

HikariPool连接池配置

Tomcat数据源和连接池配置怎么配~~ 小弟快疯了~~~

WebLogic中查看连接池的使用情况