2019独角兽企业重金招聘Python工程师标准>>>

安装:./configure --prefix=/usr/local/httperf (默认prefix为/usr/local); make; make install
安装后在/usr/local/bin下有httperf和idleconn;idleconn建立的是空闲连接,连接被Server断开后,重新再建立,保持固定数目的TCP链接

本机80端口建立100个TCP连接:
    idleconn 127.0.0.1 80 100

本机80端口建立20个TCP连接,每秒10个连接,每连接1个HTTP请求:
    httperf --server 127.0.0.1 --port 80 --num-conns 20 --rate 10

详细参数列表,可以参考http://linux.die.net/man/1/httperf以及官方文档。总的来说,有2种产生负载的模式,session-oriented & request-oriented。session-oriented模式可以通过自定义配置文件,灵活模拟用户通过浏览器访问网站过程,而request-oriented模式产生workload的模式比较单一。需要注意的几个参数:

--hog
根据需求,用尽尽可能多的TCP端口;如果不加,则只使用ephemeral ports (in the range from 1024 to 5000)

--time-out
取值参考2点:1. 真实用户的等待时间(time-out should probably be somewhere between 5 and 10 seconds - research has indicated that most people will give up on a site if it takes more than 8 seconds to download a page.)2. Client 产生流量的速率,如果不释放连接,可能很快耗尽fd(httperf could potentially quickly use up all available file descriptors, at which point it could not induce any new load on the server)

httperf命令输出信息分为6个部分:

1. 测试整体数据
Total: connections 1000 requests 1000 replies 1000 test-duration 40.037 s
    建立了TCP连接总数,HTTP request总数,以及得到HTTP reply总数

2. TCP连接数据
Connection rate: 25.0 conn/s (40.0 ms/conn, <=975 concurrent connections)
    每秒新建连接数(CPS),期间最大同一时刻并发连接数
Connection time [ms]: min 502.7 avg 29377.2 max 36690.2 median 30524.5 stddev 5620.5
    成功的TCP链接的生命周期(成功建立,并且至少1次request和1次reply),计算median是用histogram方法,统计粒度为1ms
Connection time [ms]: connect 93.6
    成功建立的TCP连接的链接建立平均时间(有可能http request发出单并不replay,最终失败)
Connection length [replies/conn]: 1.000
    平均每个TCP链接收到的HTTP reply数目

3. HTTP请求数据
Request rate: 25.0 req/s (40.0 ms/req)
    每秒HTTP请求数,若没有persistent connections(持久链接),则HTTP Request和Connect指标基本一致
Request size [B]: 67.0
    HTTP请求body大小

4. HTTP响应数据
Reply rate [replies/s]: min 1.8 avg 24.3 max 127.2 stddev 42.8 (8 samples)
    每秒收到的HTTP reply数目。每5s采集一个sample,建议至少30个sample,也就是跑150s以上
Reply time [ms]: response 85.9 transfer 29197.6
    response 代表从发送http request到接受到reply的间隔时间,transfer表示接到reply直到结束消耗的时间
Reply size [B]: header 219.0 content 4694205.0 footer 2.0 (total 4694426.0)
Reply status: 1xx=0 2xx=1000 3xx=0 4xx=0 5xx=0
    Reply状态码以及Body Size统计

5. 混杂的数据
CPU time [s]: user 1.10 system 38.88 (user 2.8% system 97.1% total 99.9%)
    如果total值远远小于100%,代表其他进程同时在run,results are "polluted" and the test should be rerun
Net I/O: 114505.2 KB/s (938.0*10^6 bps)
    计算TCP连接中发送和接收的payload,Mbps

6. 错误数据
Errors: total 0 client-timo 0 socket-timo 0 connrefused 0 connreset 0
Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0
    第1行的错误很有可能是server端的瓶颈。client-timo和connrefused错误说明很有可能被测server达到瓶颈,处理慢或者drop掉client请求(也可能是自己time-out参数设置太短)。而fd-unavail说明本机FD不够用了,看看ulimit -n;addrunavail说明client用完了TCP端口,检查net.ipv4.ip_local_port_range以及执行httperf时rate,timeout,num-conns参数的配合。如果other不为0,则在安装./configurej阶段加入--enable-debug,运行时加--debug 1看看。

转载于:https://my.oschina.net/chenzhuo/blog/148666

httperf使用入门相关推荐

  1. 用Construct 2制作入门小游戏~

    今天在软导课上了解到了Construct 2这个神器,本零基础菜鸟决定尝试做一个简单的小游戏(实际上是入门的教程啊= = 首先呢,肯定是到官网下载软件啊,点击我下载~ 等安装完毕后我便按照新手教程开始 ...

  2. Docker入门六部曲——Swarm

    原文链接:http://www.dubby.cn/detail.html?id=8738 准备工作 安装Docker(版本最低1.13). 安装好Docker Compose,上一篇文章介绍过的. 安 ...

  3. Docker入门六部曲——Stack

    原文链接:http://www.dubby.cn/detail.html?id=8739 准备知识 安装Docker(版本最低1.13). 阅读完Docker入门六部曲--Swarm,并且完成其中介绍 ...

  4. Docker入门六部曲——服务

    原文链接:http://www.dubby.cn/detail.html?id=8735 准备 已经安装好Docker 1.13或者以上的版本. 安装好Docker Compose.如果你是用的是Do ...

  5. 【springboot】入门

    简介: springBoot是spring团队为了整合spring全家桶中的系列框架做研究出来的一个轻量级框架.随着spring4.0推出而推出,springBoot可以説是J2SEE的一站式解决方案 ...

  6. SpringBoot (一) :入门篇 Hello World

    什么是SpringBoot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不 ...

  7. 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题

    入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...

  8. 5 分钟入门 Google 最强NLP模型:BERT

    BERT (Bidirectional Encoder Representations from Transformers) 10月11日,Google AI Language 发布了论文 BERT: ...

  9. 命名实体识别入门教程(必看)

    关于开发自己的命名实体识别先期思路: 虽然网上有很多相关代码,但实际如何入门材料较少,故整理下: CRF:先期可以用人民日报语料库去做,步骤如下: https://blog.csdn.net/hude ...

最新文章

  1. Google Ajax Search 参考
  2. python 处理数据量大的数据内存_PyTables处理的数据比内存大很多倍
  3. python爬虫详细步骤-Python爬虫入门,详细讲解爬虫过程
  4. NHibernate获取实体配置信息(表名,列名等等)
  5. C#委托、事件学习之(三)——热水器烧水案例
  6. memcache中的add和set方法区别
  7. HNOI2010——弹飞绵羊(lct)
  8. matlab中模块封装,MATLAB/simulink模块的封装
  9. 2017.10.1 atcoder TK1 D 思考记录
  10. 浅谈面试中常考的两种经典布局——圣杯与双飞翼 1
  11. (转载)mysql书籍
  12. ai人工智能对话了_产品制造商如何缓解对话式AI中的偏见
  13. JS 格式化时间字符串
  14. Strange Country II 【ZOJ - 3332】【竞赛图求解哈密顿通路】
  15. Spring系列之一:Spring入门
  16. 使用java在后台将数据导出为excel文件
  17. Windows 10源码一览!
  18. 纽约州立大学水牛城分校计算机科学专业,纽约州立大学水牛城分校
  19. 无法删除文件夹的解决办法
  20. 【KALI基础】字典生成和CRUNCH工具的运用

热门文章

  1. [archlinux] linux boot process/order/stage
  2. 又一个“众所周知”的DAL层设计BUG
  3. Bootstrap(一)——简介、布局容器和工具类使用(flex布局)
  4. 睡前小故事之Html
  5. 华为手机媒体音量自动静音_华为手机的音量键原来这么牛逼,这五大玩法,97.777%的人不知道...
  6. matlab线性串联校正,基于MATLAB串联超前校正设计.ppt
  7. 类的初始化和实例的初始化
  8. 甲骨文就 Java 安全问题与 FTC 达成和解
  9. 《解读NoSQL》——1.4 小结
  10. 日均数据量千万级,MySQL、TiDB 两种存储方案的落地对比