性能测试步骤

三 26th, 2013

      我们数据产品团队一直对外提供数据服务接口,涉及到的外部应用也比较多,所以性能也是我们比较关注的。从去年开始一直进行的对外接口统一的改造中,我们都是一步一步在推进。

     今天,该产品增加缓存机制,主要是用淘宝的开源KV结构数据引擎tair,这里我不详细介绍tair,主要说说性能测试的步骤。

1. 了解线上压力情况

      列出有各种性能要求的功能,如有并发要求的功能及相应的并发要求、有响应时间要求的功能。数据库容量,或指定时间的业务处理量。

      如,我们的需求主要用于为**页面提供数据,目前每天的PV大概是1000W,数据量大概为1000W条记录,期望的响应时间20ms左右。网站业务方的运营目标是提高一倍的PV量,根据这个指标进行一定的优化,看性能能否满足。

2. 计算出施压量

    一般拿到上面的压力值,就可以计算出需要的TPS、并发数(一般区分稳定和高峰两个场景)。

    按80/20原则进行进行峰值,80%的流量集中在20%的时间段。

推出稳定场景数值:
Tps = (PV数*0.8/3600*24*0.2)/进程数=9300/6 = 1600(1543)
Tps = (1000/平均响应时间)*并发用户数 => 并发数= tps*平均响应时间 / 1000 = 20(12.8)
推出峰值数值:
tps=1小时pv数/3600/机器数 = 2400(2314)
并发数 = 60(19.2)

3. 准备机器

     一个应用服务器:通过以下命令查看机器配置:cat /proc/cpuinfo;cat /proc/version;df -h;free -m

      一个施压机,也就是jmeter执行机(公司一般都用这个)。

      最后还有就是数据库或者Cobar数据源。准备好性能数据。

4. 服务器环境

      服务器上的java、jetty版本和设置与线上保持一致。我们没法保证线上机器与线下机器一致,但是尽量将可以一致的东西保持一致。这个估计也是现在很多公司做性能测试无法避免的问题,线上线下环境差异比较大。

5. 部署应用环境

     修改antx,将涉及的应用ip都改成性能机ip,数据库也改成性能库,还有缓存,而后部署。

     尤其是需要注意dubbo注册到性能注册中心,而不是功能注册中心。

6. 准备脚本并在本地调试通过

       

     分为一般的http请求如jason格式的,页面录制方式的,Java接口方式的 。   ( 备注:一般需要1小时高峰场景,8小时稳定场景!)

     jmeter是一个比较好用的工具,推荐大家都多了解下。jmeter还可以用来做功能测试,对http接口支持的非常好,之前在做接口测试eclipse插件的时候发现的。

7.  部署脚本到执行机

       大力神平台实际上也是在执行机执行jmeter的测试计划。

       所以,一般可以copy到jmeter包到执行机,然后通过执行命令: JMeter -n –t   ****.jmx

8.  执行,过程监控

  • 1. 直接运行命令:$vajra/vajraJmeter/vajra-jakarta-jmeter/bin/jmeter -n -t unReadMsgCounthigh.jmx -l unReadMsgCounthigh.jtl > unReadMsgCounthigh.log &
  • 2. 也可通过jvisualvm、jconsole监控,在自己的机器控制台里运行jvisualvm ,进行jmx监控
  • 3. netstat -na |grep 10.20.141.18
  •               jstat -gcutil 18607 1000 1000

9.  性能报告

       发送一份详细的报告很有必要,报告必须要有以下几点,这里不细说了:

  • 1. 概述,场景设计,数据准备
  • 2.  监控的性能指标
  • 3.  结论
  • 4.  硬件情况

10.  附录

  • 加jconsole和vmvisual监控
  •           

    # Add jmx parameters
    JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=10.20.159.81 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9991 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
    
    10.20.159.81 是性能机的ip
  • JAVA的内存使用等可以用下面来设置:
  • JAVA_OPTS=" -server -Xms512m -Xmx512m -XX:PermSize=128m "




除非注明,本站文章均为原创。本文基于 BY-NC-SA 协议进行授权,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 metaboy(包含链接).

本文链接地址: http://blog.wangyuxiong.com/archives/51935

订阅本站:http://www.wangyuxiong.com/feed

分类: 工作笔记 测试技术         标签: ,
目前还没有任何评论.

无觅相关文章插件,快速提升流量