性能测试时需关注应用中间件27个指标和参数

发表于:2017-10-19 14:40

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:杨建旭    来源:51Testing软件测试网采编

  本文介绍在性能测试的时候,需要关注应用中间件的哪些参数或指标。
  任何涉及到性能的事情,都离不开监控,本文还将介绍应用中间件WAS的监控方法。
  应用中间件需关注的指标
  介绍在性能测试的时候,需要关注应用中间件的哪些参数或指标。本文以WAS为例,但实际上,概念都是一样的。
  Web应用程序
  1 概念
  应用服务器提供Web服务(接收请求,返回应答),关注其服务的能力,包括响应时间、错误的比例、吞吐量等等。
  2 关注指标
  响应时间:
  1)ServiceTime:完成servlet请求的平均响应时间(毫秒)
  2)ResponseTime:接收到请求和方茴应答之间的平均时间
  3)RequestResponseTime:接到请求与分派执行之间的时间
  4)DispatchResponseTime:从分派执行到返回应答之间的平均时间。
  可以只关注ResponseTime(接收到请求和方茴应答之间的平均时间),如果这个值出现异常,再分段分析哪里出现了问题。
  ConcurrentRequests:并发处理的请求数
  RequestCount:servlet处理的请求总数。结合这个指标和监控的总时间,可以计算请求的吞吐量。
  ErrorCount:错误的数量。需要结合RequestCount计算错误的比例。
  上述指标需要在PMI中的Web Service和Web应用程序两个分类中定制。

  JDBC连接池
  1 概念
  当应用程序请求一个数据库连接时,连接池为该应用程序分配一个连接而不是重新建立一个连接;当应用程序使用完连接后,该连接被归还给连接池而不是直接释放。
  使用连接池的最主要的优点是性能。创建一个新的数据库连接需要消耗较长时间以及较多的CPU,而采用数据库连接池后,数据库连接请求可以直接通过连接池中已经建立的连接来满足,而不需要为该请求重新连接、认证到数据库服务器,这样就节省了时间和CPU。
  当然,数据库连接池如果设置过大,可能存在着多个没有被使用的连接,也就是资源的浪费。 因此,连接池中的连接也不需要都启用,而是采用这样的设计:池的大小(PoolSize)为50(举例),其中,至少有一个连接长期活着,以备有应用需要的时候马上响应。当应用需要10个连接的时候,就有10个连接被分配,此时PercentUsed为20%;当应用需要60个连接的时候,有50个连接被分配,此时PercentUsed可能非常高(例如70~100%),而剩下的10个需求则需要等待,WaitTime不为0,WaitingThreadCount(等待连接的平均并发线程数)不为0。当所有需求都被满足后,连接不再被使用,过了一段时间后,连接将被关闭。
  2 设置
  采用如下方法获取最大连接数、最小连接数、连接超时的设置
  资源->JDBC->JDBC提供程序->DB2 Universal JDBC Driver Provider,
  如下图:
  点击DB2 Universal JDBC Driver Provider
  点数据源
  点MC_EBANK,点连接池属性
  进入到如下页面,就可以看到JDBC连接池的基础配置参数。
  3 关注指标
  在性能测试中,需要重点关注的指标是:
  PoolSize:连接池的大小。连接池不宜设置过大,虽然设置很大可以解决应用线程使用数据库的问题,但可能会将数据库压垮。因此,需要在数据库的承受能力之内设置连接池的大小,具体数字需要性能测试。
  PercentUsed:正在使用的池的平均百分率,该值基于连接池中已配置的连接总数,而不是当前连接数。如果这个值比较高(例如70%),那么可能连接池设置过小,需结合WaitTime和WaitingThreadCount来扩大PoolSize。
  UseTime:使用连接的平均时间(毫秒为单位),分配连接和返回连接之间的时间差。此值包含JBDC操作时间。如果这个时间过长,可以查看是JDBCTime的问题还是应用的操作时间过长。如果是应用操作时间过长,那么就需要数据库的调优。
  WaitTime:在允许连接之前的平均等待时间(单位毫秒)。如果这个值不为0,并且等待时间较长,需结合PercentUsed和WaitingThreadCount来扩大PoolSize。
  WaitingThreadCount:等待连接的平均并发线程数
  线程池
  1 概念
  和JDBC连接池类似,池的作用都是为了达到最大化的性能,对于Java系统,通常的作法是使用线程池、对象池,这样节约线程、对象生成时的性能开销,也就是说系统启动时,预先生成一定数目的线程、对象实例在内存中,需要使用时,从池中取出实例,用完,归还到池中。
  线程池有许多类型,例如web容器线程池、ORB线程池。
  2 设置
  服务器->应用程序服务器
  点击部署的模块名称
  点线程池
  这里有各类线程池,WebContainer是jsp、html的线程池,Default是.java的线程池
  点WebContainer,如下图,就可以看到线程池的配置参数值。
  3 关注指标
  PoolSize:池中线程的平均数。
  线程池设置过大,虽然线程池大可以解决并发度不足、当线程堵塞或者死锁的情况时通过其他线程来进行事务处理,但是随之而来的性能问题也比较多,例如:1)线程池过大,导致维护开销大,每次线程维护,都需要从头到尾进行遍历;2)当一个线程堵塞时,事务另起一个线程进行工作,当堵塞线程增加到一定数目后,这些线程所占用的系统资源也是非常可观的;3)前端系统把这些洪水猛兽般的客户请求放进来,但后端数据库并没有这个处理能力,导致整个系统崩溃。
  ActiveCount:并发活动的线程数
  ActiveTime:线程处于活动状态的平均时间(毫秒)
  PercentMaxed:所有线程的平均使用时间百分比
  PercentUsed:正在使用的池的平均百分率,此值基于线程池中所有配置的线程的总数,而不是目前池大小
  JVM虚拟机
  1 概念
  JVM的概念本身不需要赘述。
  2 设置
  登录was console选择服务器->应用服务器
  点击部署的应用名称,选择Java和进程管理->进程定义
  点击Java虚拟机
  如下图,就可以看到JVM的基础配置参数数据。
  3 关注指标
  HeapSize:JVM的堆大小,即运行时的总内存。
  堆设置过大,会占用过多的内存,影响其他系统进程、其他JVM的内存需求,甚至使物理机的内存资源耗尽,导致OS层面的PagingSpace In/Out的发生。同时,JVM堆过大,垃圾回收的过程将变长。
  堆设置过小,会使得对象可分配空间变小,可能导致:1)WAS的管理节点、WAS应用无法启动,2)应用的并发能力受限,效率极低,3)频繁的使用垃圾收集机制来释放内存空间,而每次垃圾收集,都会耗用一定的系统资源。
  因此,需要通过监控数据,设置合理的堆大小,在垃圾回收间隔和执行垃圾回收需要的暂停时间之间寻找平衡点。
  UsedMemory:JVM运行时中的使用的内存总量(KB)
  ProcessCpuUsage:JVM的CPU使用情况
  会话数
  1 概念
  会话是指HTTP协议的会话行为,会话数直接决定了有多少用户请求可以并发的被满足。当用户请求超过会话数的情况下,就会表现出请求失败或者请求的响应时间过长。
  2 设置
  服务器->应用程序服务器->部署的应用->会话管理,显示内存中最大会话量参数值

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号