WEBLOGIC连接池配置
Posted 厦开系统联盟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WEBLOGIC连接池配置相关的知识,希望对你有一定的参考价值。
前言(敲黑板)
你是怎么配置WEBLOGIC连接池的?
它应该如何配置?
一、问题来了
某项目非功能测试时碰到了一个奇怪的拐点现象,随着Vuers的增加,响应时间变化不大,但TPS却掉头向下,查看压力机、服务器的资源都没有瓶颈。应用程序逻辑处理存在瓶颈?但是现测试的版本在前些天测试时,最高TPS却是现如今拐点TPS的2倍多,程序版本并没变化。
那问题原因出在哪呢?
由于现象诡异,为了尽快找出问题原因,各路人马分头行开动:
开发人员:跟踪日志、检查代码;
测试人员:检查测试脚本、压力机运行情况;
系统管理员:跟踪服务器的使用情况;
DBA:检查数据库的运行情况等。
开发人员查看日志,发现对ORACLE数据库的访问耗时,很多交易从之前的1到2ms延长到了10ms以上。数据库出现了瓶颈?可是DBA在数据库中跟踪SQL运行情况,发现SQL耗时都是1ms左右,和前些天测试的耗时几乎无差,且数据库服务器的资源使用率低于3%,不存在瓶颈,不像是数据库的问题。
那日志为何显示对ORACLE数据库的访问耗时变长呢?
有没有遗漏了某些环节?
对ORACLE数据库的访问,除了SQL执行耗时外,还有和数据库的连接耗时,应用和数据库的连接采用的是WEBLOGIC的连接池,难道是连接池有问题?
登录WEBLOGIC控制台,监控连接池情况:
问题终于浮出水面
(点开图片,更清晰)
二、连接池配置规则
问题原因找到了,那我们应该如何配置连接池呢?
首先要获得系统的非功能指标:TPS、交易响应时间、AP服务器的SERVER数量等信息:
计算公式如下:
我们知道在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,重新进行测试,监控连接池,统计信息如下:
三、回顾
连接池设置的是否合理将会对系统处理能力、服务器的负载产生较大影响,因此建议综合考虑服务器的配置、TPS、交易响应时间等情况,合理设置连接池容量。以上连接池配置公式,让我们再一起重温下吧:
大家记住了吗?
厦门开发中心测试与推广支持处 系统与非功能小组出品
编辑:方妍
以上是关于WEBLOGIC连接池配置的主要内容,如果未能解决你的问题,请参考以下文章