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

  ,该产品增加缓存机制,主要是用淘宝的开源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 "