• 14
  • 14
分享
  • 性能测试WAS内存使用的探索和分析——软件测试圈
  • 曼倩诙谐 2021-01-28 10:41:16 字数 1689 阅读 1215 收藏 14

  性能测试中,CPU和内存是关注最多的两个性能指标。以我行应用最多的系统架构(WAS+Oracle)来说,CPU使用率高的问题多发生于数据库,比如索引不当引发的表扫描、绑定变量使用不当引发的硬解析、连接池使用不当引发的频繁建立断开连接,这些都会导致数据库服务器CPU使用率高。

  内存问题则多发生于应用服务器。部署在WAS平台的Java应用,经常发生的问题是JVM堆内存溢出。产生该问题的原因有很多:

  ·由环境引发的,虚拟机物理内存不足;

  ·由参数配置引发的,JVM堆内存设置过小;

  ·由应用程序引发的,内存泄露,错误使用大对象等等。

  在实际性能测试过程中选择监控指标时,对JVM堆内存的监控分析比对操作系统内存的分析更为重要。

  JVM堆内存溢出的原因中,虚拟机物理内存不足常常被忽视。本文结合项目测试过程中发现的由内存不足引发的性能问题,设计几个场景来探索JVM堆内存和虚拟机内存之间的影响关系。

  一、莫名其妙的“会话超时”

  在某交易(登录+查询+退出)的疲劳场景中,发现应用服务器内存使用率超过90%,且被测交易存在大量报错:用户未登录或已超时,请登录。

  WAS中会话相关的两个参数,最大内存中会话数1000和会话超时30分钟。性能测试场景中,会话数使用不到1000,且登录之后并没有退出,也不会发生用户未登录或已超时。所以,报错的原因在哪里?

  WAS的JVM堆内存和操作系统内存状态如图所示。

5-1.png


JVM堆内存状态

5-2.png

  可以看到,JVM堆内存的分配达到最大值3G,堆实际使用值在到达3G时发生GC,循环如是。JVM堆内存未发生内存溢出,没有生成heapdump、javacore文件,Server没有重启。操作系统内存使用已达92%,且Swap空间使用了1G左右。

  Swap分区通常被称为交换分区,这是一块特殊的磁盘空间,当实际内存不够用的时候,操作系统会从内存中取出一部分暂时不用的数据,放在交换分区中,从而为当前运行的程序腾出足够的内存空间。也就是说,当操作系统开始使用Swap空间时,就意味着内存不够。同时,由于Swap分区是磁盘空间,使用Swap分区会频繁读写磁盘,这会显著降低操作系统的运行速度。

  根据以上分析,初步判断,虚拟机内存不足,使用到Swap分区。如果session信息被从内存交换到Swap分区,那这段时间该线程的查询请求,无法验证到session,就会报“用户未登录或已超时,请登录”,交易失败;如果session信息又被从Swap交换至内存,又不报错,交易成功。下面通过一些实验来验证这一推测。

  二、揭开内存的神秘面纱

  首先,我们看一下测试环境和生产环境的资源配置。可以看出测试环境单台虚拟机的配置(CPU内存)是生产环境的1/2,这也是内存不足的根源,下面围绕内存设计三个场景的测试。

5-3.png

  场景一:疲劳测试发生问题的场景。

  JVM堆内存GC正常,虚拟机内存不足,使用了Swap分区。

  为了进一步确定Swap分区确实是被WAS使用 ,我们进入到/proc下WAS Server进程的目录,cd /proc/${WasServerPid},该目录下的smaps文件详细记录了该进程的内存使用情况,然后执行cat smaps | grep Swap | grep -v "0 kB" | sort -nr,便可查看进程对Swap的使用。通过查看,该WAS节点的Server1使用了538MB,Server2使用了574MB,加起来1G左右,这与此前监控的结果相符。而重启Server时,这两个值都是0,即未使用Swap分区。

  场景二:每个节点只保留1个Server,JVM堆内存最大值为3G,虚拟机8G内存对于单Server完全够用。

  测试过程中,交易整体运行平稳,没有报错。JVM堆的分配值也是到达3G,然后通过GC循环使用。但由于只启动了一个Server,内存够用,没有使用到Swap分区,并且存在一定的富余。WAS的JVM堆内存和操作系统内存状态如图所示。

5-2.png

5-4.png



作者:姚锴 马骁雄   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 一段时间内,我从上千个面试者中聘用大约100名测试员,从这段面试经历中我揭开了一种模式。在采访中,我和同行的测试人员进行了多次讨论,我非常高兴地看到了我们的测试员群体中的高素质人才。但让我也分享故事的另一面,我所谈论的模式也让我很伤心。看着潜在的表演者被关进一个虚拟的责任笼里,我永远不会感到高兴。看到摇滚明星在受控制的舞台上表演,我感到不满。如果你还不知道什么是问题,什么是基线,这是我们测试界相当大的一部分问题,在他们作为测试人员开始他们的职业生涯多年之后,在多个方面都没有足够的增长。忘记360度,甚至不到一半。对不起,这是残酷的,但它是真实的。这是谁的责任?也许在某种程度上是整个行业的意识。...
            0 1 2028
            分享
          • http接口工具有很多如:postman、jmeter、soupUI、Java+httpclient、robotframework+httplibrary等1、什么是接口接口就是内部模块对模块,外部系统对其他服务提供的一种可调用或者连接的能力的标准接口的种类和分类:webservice和http api接口1)webservice接口是走soap协议通过http传输,请求报文和返回报文都是xm格式,可以通过jme、soapui工具进行测试;2)http api接口是走http协议通过路径来区分调用的方法,请求报文格式都是key-value形式,返回报文一般是json串,常见的请求方式有get、...
            1 1 1682
            分享
          •   据报道,针对美国政府起诉微软690亿美元收购动视暴雪交易,法官将于1月3日举行首次审前听证会。  去年1月,微软宣布将以每股95美元的现金,收购游戏开发和互动娱乐内容发行商动视暴雪,交易总金额约为690亿美元。交易完成后,微软将成为世界上营收第三高的游戏公司,仅次于腾讯和索尼。  上个月,负责反垄断执法的美国联邦贸易委员会(FTC)要求法官阻止这笔交易,理由是交易将使微软的Xbox游戏平台获得动视暴的独家内容,从而导致竞争对手任天堂和索尼的游戏平台被冷落。  而微软则反驳称,这笔交易将使游戏玩家和其他游戏公司从中受益。同时,微软还承诺,至少在10年内继续向索尼等竞争对手提供《使命召唤》游戏...
            0 0 991
            分享
          •   苹果与医疗科技公司 Masimo 之间的专利纠纷持续发酵,近期更是发展到 ITC 裁决苹果侵犯 Masimo 专利,可能导致 Apple Watch Series 9 和 Apple Watch Ultra 2 在美国禁售的地步。  根据最新消息,苹果正在探索多种解决方案,其中之一便是通过 Apple Watch OS 10 系统的软件更新尝试规避 Masimo 的专利。  IT之家此前报道,今年 10 月,ITC 裁定苹果手表的血氧传感器侵犯了 Masimo 的两项专利,涉及五项独立的专利侵权行为。目前该案件已进入为期 60 天的总统审查期,将于 12 月 25 日截止。拜登政府可以介入...
            0 0 1054
            分享
          •   引言  一款完整的游戏,不仅有精美的画面,还有符合游戏的音乐、音效与配音。音乐提升玩家氛围,配音引导玩家,音效是游戏内涵的补充,它可以更好展现游戏开发者架构整个游戏的价值取向。  优秀的游戏音效可以让玩家在赏玩游戏之后,产生“余音绕梁三日而不绝” 的共鸣,这样游戏内涵也得到了提升,并更有效地延长了游戏的生命力。  1.游戏音效的分类  (1)环境音效:环境音效主要用于营造场景或者关卡的氛围和情绪,包括了下雨天、刮风、晴天、等天气相关的音效以及风吹的声音等其他与环境有关的音效。  (2)场景音效:场景音效的作用与环境音效一致。是场景内的各类物件的音效,主要是角色同物件交互时的音效。如打碎瓦罐...
            0 0 651
            分享
      • 51testing软件测试圈微信