web接口性能测试

杂记 2017-08-03 1,247

web接口的性能测试

用过apache的一定知道ab这个命令

ab-n 100 -c 100 http://local host/? 

就是说对这个url请求多少次,允许同时请求多少个

目的就是得到所谓的每秒请求数rps或者qps或者tps,以及多次请求的平均响应时间
http://www.cnblogs.com/data2value/p/6220859.html

ab常用参数的介绍:
 -n :总共的请求执行数,缺省是1;
 -c: 并发数,缺省是1;
 -t:测试所进行的总时间,秒为单位,缺省50000s
 -p:POST时的数据文件
 -w: 以HTML表的格式输出结果 
      

其他的测试软件有 (siege,webbench)http://jingyan.baidu.com/article/e3c78d647a57833c4c85f502.html(

得到这两个指标有什么用呢 rps或者qps或者tps?

      昨天我们说到性能是程序很重要的一个指标,怎么评估性能呢,就得靠压力测试,简称压测,
      由于软件系统复杂度太高,我们从理论上无法估算出性能的数据,那么我们通过压测得出一个数据,优化后再压测的数据对比,就能知道我们优化的效果如何 
      我们知道现在机器大多是多核的,nginx也支持开启多个进程,就需要不断调整nginx配置来确认当前机器的最佳配置  

不了解情况的可能觉得说nginx开的进程是不是越多越好呢?

       我们分别在一个1核1g的4核4g的虚拟机上做个实验,可以发现,我如果都是开一个nginx进程处理,4核的优势无法体现,性能差别不大,我如果都开4个进程,单核的性能翻到会下降,4核的则成倍增加


      

刚说的测试怎么做呢?

       1.就是分别在虚拟机里安装linux、nginx,然后写一个测试的html页面
       
       从局域网里分别ab,一般为了防止数据误差,每个实验做三次请求取平均值
       
       2.如果从本机ab  呢 ?会有什么影响吗?
       会有影响,本机执行ab压测工具本身会造成性能损耗,机器在接受请求是可用的系统资源变少,变得不稳定,数据结果误差容易变得很大


       总结 :先养成写好程序接口就压测的习惯,你就可以做各种纵向横向性能对比
       

这个查询接口和那个接口都是读数据库,虽然表结构不同但取数据量差不多,为啥一个比另一个慢?

       带着问题查可能发现是建表时没加主键索引
       1根据压测需求增大可以用上压测平台
       2 对某些接口做几分钟到几个小时的压测,得到性能qps曲线,可以探索为啥有的接口突然性能下降,所以掌握压测技能是提升自己代码水平的一个特别实用的技能
                   

       
问题 6 压测平台是啥,能够图形展示?   
        是的,比较知名的有ngrider  你们也可以去查查还有哪些压测平台,做做比较,但原理都是相当于执行ab
        

能够用molten追踪php应用http、redis、mysql、memcached、mongodb等组件的调用信息

        https://my.oschina.net/u/3635821/blog/1499464?from=timeline&isappinstalled=0#10006-weixin-1-52626-6b3bffd01fdde4900130bc5a2751b6d1

本文由 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论