httperf使用入门
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使用入门相关推荐
- 用Construct 2制作入门小游戏~
今天在软导课上了解到了Construct 2这个神器,本零基础菜鸟决定尝试做一个简单的小游戏(实际上是入门的教程啊= = 首先呢,肯定是到官网下载软件啊,点击我下载~ 等安装完毕后我便按照新手教程开始 ...
- Docker入门六部曲——Swarm
原文链接:http://www.dubby.cn/detail.html?id=8738 准备工作 安装Docker(版本最低1.13). 安装好Docker Compose,上一篇文章介绍过的. 安 ...
- Docker入门六部曲——Stack
原文链接:http://www.dubby.cn/detail.html?id=8739 准备知识 安装Docker(版本最低1.13). 阅读完Docker入门六部曲--Swarm,并且完成其中介绍 ...
- Docker入门六部曲——服务
原文链接:http://www.dubby.cn/detail.html?id=8735 准备 已经安装好Docker 1.13或者以上的版本. 安装好Docker Compose.如果你是用的是Do ...
- 【springboot】入门
简介: springBoot是spring团队为了整合spring全家桶中的系列框架做研究出来的一个轻量级框架.随着spring4.0推出而推出,springBoot可以説是J2SEE的一站式解决方案 ...
- SpringBoot (一) :入门篇 Hello World
什么是SpringBoot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不 ...
- 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题
入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...
- 5 分钟入门 Google 最强NLP模型:BERT
BERT (Bidirectional Encoder Representations from Transformers) 10月11日,Google AI Language 发布了论文 BERT: ...
- 命名实体识别入门教程(必看)
关于开发自己的命名实体识别先期思路: 虽然网上有很多相关代码,但实际如何入门材料较少,故整理下: CRF:先期可以用人民日报语料库去做,步骤如下: https://blog.csdn.net/hude ...
最新文章
- Google Ajax Search 参考
- python 处理数据量大的数据内存_PyTables处理的数据比内存大很多倍
- python爬虫详细步骤-Python爬虫入门,详细讲解爬虫过程
- NHibernate获取实体配置信息(表名,列名等等)
- C#委托、事件学习之(三)——热水器烧水案例
- memcache中的add和set方法区别
- HNOI2010——弹飞绵羊(lct)
- matlab中模块封装,MATLAB/simulink模块的封装
- 2017.10.1 atcoder TK1 D 思考记录
- 浅谈面试中常考的两种经典布局——圣杯与双飞翼 1
- (转载)mysql书籍
- ai人工智能对话了_产品制造商如何缓解对话式AI中的偏见
- JS 格式化时间字符串
- Strange Country II 【ZOJ - 3332】【竞赛图求解哈密顿通路】
- Spring系列之一:Spring入门
- 使用java在后台将数据导出为excel文件
- Windows 10源码一览!
- 纽约州立大学水牛城分校计算机科学专业,纽约州立大学水牛城分校
- 无法删除文件夹的解决办法
- 【KALI基础】字典生成和CRUNCH工具的运用
热门文章
- [archlinux] linux boot process/order/stage
- 又一个“众所周知”的DAL层设计BUG
- Bootstrap(一)——简介、布局容器和工具类使用(flex布局)
- 睡前小故事之Html
- 华为手机媒体音量自动静音_华为手机的音量键原来这么牛逼,这五大玩法,97.777%的人不知道...
- matlab线性串联校正,基于MATLAB串联超前校正设计.ppt
- 类的初始化和实例的初始化
- 甲骨文就 Java 安全问题与 FTC 达成和解
- 《解读NoSQL》——1.4 小结
- 日均数据量千万级,MySQL、TiDB 两种存储方案的落地对比