性能测试关注WAS数据源连接池配置

Posted 51Testing软件测试网

tags:

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

出品|51Testing软件测试网


性能测试的目的是验证软件系统是否能够达到用户提出的性能指标,发现软件系统中存在的性能瓶颈、优化软件,起到优化系统的目的。


性能瓶颈定位和调优是个复杂的过程,通常可以从应用参数设置、硬件资源、代码或SQL语句、架构或需求等方面综合考量。


本文以某应用系统性能测试过程中遇到的交易报错入手,详细讲述WAS数据源连接池参数配置对系统性能的影响。


性能测试关注WAS数据源连接池配置
应用系统基本情况介绍
性能测试关注WAS数据源连接池配置


某应用系统性能测试环境数据库服务器使用Oracle RAC,由两台PC Server物理机组成,应用服务器使用11台PC Server虚拟机,程序运行在WAS上。


测试环境WAS与Oracle各项参数配置,在系统初次投产前的性能测试过程中已调整到一个相对合理的值。在之后陆陆续续的系统变更测试时,再未修改过WAS与Oracle的参数配置。

性能测试关注WAS数据源连接池配置


性能测试关注WAS数据源连接池配置
问题发现
性能测试关注WAS数据源连接池配置


前段时间,该系统要进行操作系统等基础软件升级并同时做B库分库,需要进行性能测试。


因应用程序几乎没做大的变动,性能测试更多侧重回归和升级前后的对比,所以选用回放生产交易日志的方式开展测试,覆盖面更广、更接近生产场景。


测试过程中针对不同并发的压测情况看,部分交易失败,报错“小总控发生未知异常”,报错数量从几千到几万笔不等。


进一步查询更详细的错误信息发现,其中部分报错是因为超时,部分报错是因为触发了熔断机制,见下图。

性能测试关注WAS数据源连接池配置


在排查导致交易超时失败甚至触发熔断的原因过程中,甚至出现了交易成功率大幅波动后,交易几乎全部失败的场景。交易成功率变化曲线见下图。


此时,发现数据库已无法连接。

性能测试关注WAS数据源连接池配置


性能测试关注WAS数据源连接池配置
分析与定位
性能测试关注WAS数据源连接池配置


使用top命令查看数据库服务器资源使用情况,1机CPU使用率user部分为0,进程中已无Oracle相关进程。


数据库出现故障,无法启动。只剩2机的数据库还在工作,对外服务能力下降50%。

性能测试关注WAS数据源连接池配置


停止发压一段时间后,数据库恢复连接,怀疑应该是连接数耗尽了。


查询数据库允许的最大连接数:

select value from v$parameter where name = 'processes';查询返回5000。


查询数据库当前连接占用数:

select count(*) from v$process;连接占用数一直在4900+,不释放。


检查WAS数据源连接池参数配置,见下图。

性能测试关注WAS数据源连接池配置


WAS数据源连接池设置最小20,最大45,未使用的超时时间是1800秒=30分钟。


发压时,如数据源连接池中连接数超过20,发压结束后,等待30分钟,连接数最小只会减为20,保持20连接不断开。


该应用系统数据库C库分库4个,A库分库4个,B库分库4个(B库为每个微服务链其中1个)。


因测试环境资源有限,数据库分库并未进行物理分库,而是不同的分库按照不同的数据库用户区分,都部署在了同一套RAC上。因RAC中1机Oracle故障无法启动,所有压力都集中到2机上。


按照这种系统架构,每个WAS Server配9个数据源,4个微服务共42个WAS Server,每个数据源最小连接数20计算,共需要占用连接数42*9*20=7560。


也就是说如果连接数都能用满,发压结束30分钟后,也还会有7560个连接不释放。


如果RAC无故障,2个节点最大支持10000process,且系统初次投产时,A、B库均未分库,每个WAS Server只有5个数据源。


但并发发压时,连接数没有成为性能瓶颈。此次,分库增加了需要占用的连接,同时1机的故障,更是让数据库服务能力减半。


性能测试关注WAS数据源连接池配置
问题解决
性能测试关注WAS数据源连接池配置


把数据库连接池最小连接数改为10,最大连接数改为40。这样,最少占用连接数变为42*9*10=3780。


再次发压,并在发压过程中与发压结束30分钟后查询各个微服务占用的连接数,验证想法无误。


同时根据数据库服务器CPU、内存等资源消耗情况,综合考虑,将Oracle process参数调整为8000,适当增加最大连接数,重启数据库生效。


按照100并发发压,占用连接数最多时到5600+,数据库服务器CPU使用率达到85%,再无因交易超时、触发熔断或获取不到连接导致的“小总控发生未知异常”报错。停止发压30分钟后,占用连接数降低到3200左右。


性能测试关注WAS数据源连接池配置
总结
性能测试关注WAS数据源连接池配置


从本次测试过程可以看出,随着系统架构、硬件资源、应用性能需求的变化,性能测试过程中应关注应用参数的适应性。从成本和难易度的角度来说,性能调优的一般顺序也从应用参数设置的调整开始。


测试环境与生产环境硬件资源、部署架构的差异,造成测试环境应用参数的配置也不能完全照搬生产配置。


WAS数据源连接池与Oracle process参数的关系,增加process会有相应句柄、内存的开销,数据库服务器CPU、内存等资源配置是否能支持额外的开销等,都是性能测试人员需要综合考虑的问题。


性能测试关注WAS数据源连接池配置
End
性能测试关注WAS数据源连接池配置

性能测试关注WAS数据源连接池配置

推荐阅读

点击阅读☞

点击阅读☞

点击阅读☞

点击阅读☞

点击阅读☞

“阅读原文”一起来充电吧!

以上是关于性能测试关注WAS数据源连接池配置的主要内容,如果未能解决你的问题,请参考以下文章

啄木鸟性能测试WAS内存使用的探索和分析

性能测试:连接池不释放

基于Linux的WebSphere性能调优与故障诊断

基于Linux的WebSphere性能调优与故障诊断

一次项目实践中DBCP数据库连接池性能优化

一次项目实践中DBCP数据库连接池性能优化