和同事交流关于性能测试的东西,以前也做过性能测试,突然想写点自己关于如何做性能测试的认识。
  基于B/S架构的系统,利用loadrunner做性能测试,利用nmon监控系统资源(用linux自带的top,vmstat等命令也可以,写一些简单的shell脚本行了)。
  那么到底该怎么去做性能测试呢?
  1、首先要了解被测系统的结构和有关知识的储备。
  了解了被测系统,在后期性能出现异常的时候,定位相对容易一些;而且知道在测试的过程中需要监控什么。
  一个简单BS系统结构图:

  该系统有一下及部分组成:
  APP:一台nginx,兼做web和应用服务器
  Memcached:负责做数据缓存
  lucene:负责做搜索
  RabbitMQ:负责某些业务的队列处理
  mysql:数据库服务器,一个主库,一个从库
  从以上系统结构来看,要搭建和维护性能测试环境,需要的一些必要的知识。
  对于APP:需要了解nginx的相关知识,怎么修改配置,在哪里看日志
  对于Memcached:怎么搭建Memcached,怎么查看命中率,Memcached的作用是什么
  lucene:这个lucene是干什么用的,要怎么配置
  RabbitMQ:MQ要如何配置,都那些业务用到了MQ。
  Mysql:如何配置主从,为什么要配置主从,主从如何同步等等
  在搭建环境的过程中肯定会遇到这样或那样的问题,要自己找资料,或者相关的开发人员一起解决,并注意做笔记,防止以后同样的问题再出现。
  2、了解了系统结构,开始搭建测试环境,并准备数据。
  测试环境尽量要和生产环境的结构保持一致,还有配置文件等也要保持一致,这样能保证性能测试的结果更加真实和接近生产环境。
  数据准备一定要充足,而且数据量要大于等于生产环境,这样能更真实的模拟生产环境。比如对一个select语句而言,10W的数据,和1000W的数据,查询时间肯定有差别。如果数据量太小不能反映真实情况下性能了。(可以把线上的数据导入到测试环境,但是要注意把用户比较隐私的数据都替换掉)
  如果有可能的话,测试环境的数据要比生产环境多出20%,做一些性能上边的冗余,防止发生突然的性能尖峰。