nginx的压力测试
#-----------http_load讲解------------------------------------#
Web服务器压力测试工具常见的有http_load、webbench、ab和Siege,
我今天主要跟大家分享一下,我在工作中对http_load使用的总结。
一、下载http_load
下载地址:http://www.acme.com/software/http_load/http_load-12mar2006.tar.gz
二、安装http_load
tar zxvf http_load-12mar2006.tar.gz
cd http_load-12mar2006
make && make install
三、使用http_load
命令格式:http_load -p 并发访问进程数 -s 访问时间 需要访问的URL文件
比如:http_load -p 5 -s 60 url.tx
或者 http_load -parallel 5 -seconds 60 url.txt
四、参数讲解
-parallel 简写-p :含义是并发的用户进程数。
-fetches 简写-f :含义是总计的访问次数
-rate 简写-p :含义是每秒的访问频率
-seconds简写-s :含义是总计的访问时间
五、URL文件格式
URL文件:url.txt,文件格式是每行一个URL,URL最好超过50-100个测试效果比较好.文件格式
如下:
http.www.bdkyr.com/5k.html
http.www.bdkyr.com/10k.html
http.www.bdkyr.com/15k.html
http.www.bdkyr.com/20k.html
六、使用范例
例如:
[root@node2 http_load]# ./http_load -p 2 -s 10 url.txt
49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds
5916 mean bytes/connection
4.89274 fetches/sec, 28945.5 bytes/sec
msecs/connect 28.8932 mean, 44.243 max, 24.488 min
msecs/first-response 63.5362 mean, 81.624 max, 57.803 minHTTP response codes code 200 — 49
结果分析:
1.49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds
说明在上面的测试中运行了49个请求,最大的并发进程数是2,总计传输
的数据是289884bytes,运行的时间是10.0148秒
2.5916 mean bytes/connection
说明每一连接平均传输的数据量28988449=5916
3.4.89274 fetches/sec, 28945.5 bytes/sec
说明每秒的响应请求为4.89274,每秒传递的数据为28945.5 bytessec
4.msecs/connect 28.8932 mean, 44.243 max, 24.488 min
说明每连接的平均响应时间是28.8932 msecs,最大的响应时
间44.243 msecs,最小的响应时间24.488 msecs
5.msecs/first-response 63.5362 mean, 81.624 max, 57.803 min
6、HTTP response codes code 200 — 49
说明打开响应页面的类型,如果403的类型过多,那可能
要注意是否系统遇到了瓶颈。
七、特殊说明:
测试结果中主要的指标是 fetchessec、msecs/connect 这个选项,即服
务器每秒能够响应的查询次数,用这个指标来衡量性能。似乎比 apache的ab准
确率要高一些,也更有说服力一些。
Qpt-每秒响应用户数和response time,每连接响应用户时间。
测试的结果主要也是看这两个值。当然仅有这两个指标并不能完成对性能的分析,
我们还需要对服务器的cpu、men进行分析,才能得出结论
httpload的用法
官方网站http://www.acme.com/software/http_load/
一、安装
$ wget http://acme.com/software/http_load/http_load-12mar2006.tar.gz
$ tar zxvf http_load-12mar2006.tar.gz
$ cd http_load-12mar2006/
$ make
$ sudo make install
安装到/usr/local/bin
可以通过man http_load查看使用说明(前提将http_load.1文件拷贝到man得查找路径中)
1错误信息:byte count wrong
http_load在处理时会去关注每次访问同一个URL返回结果(即字节数)是否一致,若不一致就会抛出byte count wrong
所以动态页面可以忽略这个错误信息。
或者可以对代码做修改http_load.c
【原来的】
“stderr, "%s: byte count wrong\n", urls[url_num].url_str );”
【修改的】
“stderr, "%s: byte count wrong: first=%ld,cur=%ld\n", urls[url_num].url_str,urls[url_num].bytes,connections[cnum].bytes );”
报错:too many open files
系统限制的open files太小,ulimit -n 修改open files值即可;
无法发送大请求 (请求长度>600个字符)
默认接受请求的buf大小 http_load.c
912 static void
913 handle_connect( int cnum, struct timeval* nowP, int double_check )
914 {
915 int url_num;
916 char buf[600]; //根据需要修改,如:char buf[4096]
917 int bytes, r;
,表示关闭;
net.ipv4.tcp_timestamps=1 开启对于TCP时间戳的支持,若该项设置为0,则下面一项设置不起作用
net.ipv4.tcp_tw_recycle=1 表示开启TCP连接中TIME-WAIT sockets的快速回收
客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端 口号,所以新的连接没办法绑定端口,即“Cannot assign requested address”。是客户端的问题不是服务器端的问题。通过netstat,的确看到很多TIME_WAIT状态的连接。
从网上找了解决办法:
执行命令修改如下2个内核参数
sysctl -w net.ipv4.tcp_timestamps=1 开启对于TCP时间戳的支持,若该项设置为0,则下面一项设置不起作用
sysctl -w net.ipv4.tcp_tw_recycle=1 表示开启TCP连接中TIME-WAIT sockets的快速回收
使用方式:
http_load -parallel 100 -fetches 10000
次
http_load -parallel 100 -seconds 3600
小时
http_load -rate 100 -fetches 10000
个请求频率,请求10000次
http_load -rate 100 -seconds 3600
个请求频率执行1小时
测试报告
209 fetches, 10 max parallel, 6.9004e+06 bytes, in 30 seconds
33016.3 mean bytes/connection
6.96667 fetches/sec, 230013 bytes/sec
msecs/connect: 31.8767 mean, 34.121 max, 31.304 min
msecs/first-response: 274.644 mean, 3228.69 max, 127.399 min
208 bad byte counts
HTTP response codes:
code 200 -- 209
nginx的压力测试的更多相关文章
- Nginx防压力测试
一.ab压力测试方式为: $ab -n 1000 -c 100 http://www.abc.com:80/ 二.直接简单的方法限制同一个IP的并发最大为10:(以宝塔管理工具为例) 1.打开Ngin ...
- Nginx ab压力测试
20-ab压力测试及nginx性能统计模块 优化的启发,打开的文件太多 Nginx 错误日志显示,打开文件数太多 系统层面 more /proc/sys/net/core/somaxconn 单个Ng ...
- linux 下 安装nginx及压力测试
linux 编译安装nginx,配置自启动脚本 下载nginx: wget http://nginx.org/download/nginx-1.8.0.tar.gz下载openssl : wget h ...
- 使用ab对nginx进行压力测试
nginx以高并发,省内存著称. 相信大多数安装nginx的同学都想知道自己的nginx性能如何. 我想跟大家分享下我使用ab工具的压力测试方法和结果, ab是针对apache的性能测试工具,可以只安 ...
- Nginx - webbench压力测试
1. 下载,安装,进目录. 2. 执行:webbench -t 10 -c 1000 http://192.168.1.44/ (我开的nginx,默认端口80,直接处理了) 结果分析: Webben ...
- Nginx压力测试工具之WebBench
Nginx压力测试工具之WebBench 在Apache中有自带的ab命令可以测试服务的压力,而nginx没有自带的命令,必须要采用第三方软件来测试,今天就简单介绍一下webbench对nginx ...
- 记录一次自己对nginx+fastcgi(fpm)+mysql压力测试结果
nginx + fastcgi(fpm) 压力测试: CentOS release 5.9 16核12G内存 静态页面: 并发1000,压测200秒,测试结果: 系统最大负载5.47 成功响应: 25 ...
- Nginx配置性能优化与压力测试webbench【转】
这一篇我们来说Nginx配置性能优化与压力测试webbench. 基本的 (优化过的)配置 我们将修改的唯一文件是nginx.conf,其中包含Nginx不同模块的所有设置.你应该能够在服务器的/et ...
- linux nginx常见问题及优化,压力测试,tomcat服务器优化
nginx常见问题 nginx优化全局配置优化[root@web2 nginx]# vim conf/nginx.confuser nobody;worker_processes 1;(与cpu核心数 ...
随机推荐
- C语言知识整理(2):volatile与register
1.volatile volatile是易变的,不稳定的意思,volatile是关键字,是一种类型修饰符,用它修饰的变量表示可以被某些编译器未知的因素更改,比如操作系统.硬件或者其他线程等,遇到这个关 ...
- mvc+ef+oracle环境中报错:ORA-00001: 违反唯一约束条件
分析原因: 在oracle中,主健不能自动生成,不过可以通过“序列”来实现,如果是这样的话,问题很可能就出在“序列”上了: ORACLE表主键ID突然从已经存在的ID值开始自动生成,导致违反主键唯一性 ...
- 转载python2进制打包相关
Python模块——struct(字节流,组包拆包实现) http://www.linuxidc.com/Linux/2014-02/97158.htm [日期:2014-02-24] 来源:Linu ...
- placeholder在ie789下无效
<input type="text" class="input" placeholder="用户名/手机号码/邮箱" value=&q ...
- JDE910笔记1--基础介绍及配置[转]
1.一般JDE部署后环境: DV:开发环境 PY:测试环境 PD:正式环境 根据端口号区分不同环境,可配置.同时,JDE默认使用分发服务器,不同环境连接为不同的数据库. 2.命名规范: 自定义项目.函 ...
- oracle 里面定时执行任务,比如存储过程内容等
DECLARE job_no_ NUMBER; BEGIN DBMS_JOB.SUBMIT(job_no_, 'proc_qszx_dw_sc(' ...
- js基础之DOM
一.创建子节点 发帖在顶部显示: var oBtn = document.getElementById('btn1'); var oUl = document.getElementById('ul1' ...
- ZOJ 2477 Magic Cube 暴力,模拟 难度:0
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1477 用IDA*可能更好,但是既然时间宽裕数据简单,而且记录状态很麻烦,就直接 ...
- hdu 4605 Magic Ball Game
http://acm.hdu.edu.cn/showproblem.php?pid=4605 可以离线求解 把所以可能出现的 magic ball 放在一个数组里(去重),从小到大排列 先不考虑特殊 ...
- 跨域SSO的实现
翻译自CodeProject网站ASP.NET9月份最佳文章:Single Sign On (SSO) for cross-domain ASP.NET applications. 翻译不妥之处还望大 ...