var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-333696-1']); _gaq.push(['_trackPageview']); _gaq.push(['_trackPageLoadTime']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();
  • 2011年08月08日

    使用ApacheBench 做性能测试

    分类:

    ApacheBench (ab) 是一款命令行计算机程序,它用作度量HTTP web 服务器性能。起初被设计用作测试Apache HTTP Server,现在它实际上可用作测试任何web 服务器。它被设计用作提供某个服务器能服务的性能,特别是它能显示该服务器每秒能够服务的请求数。Windows 下安装好 Apache HTTP 服务器后,进入 bin 目录,就可以找到该可执行文件 ab.exe。

    ab 用法

    见其帮助。 如:

    • PC浏览器40个并发,总共100次请求

    ab -e output.csv -H "User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)" -n 100 -c 40 http://news.sina.com.cn

    • PC浏览器1000个并发,总共1000次请求,并使用Keep-Alive连接

    ab -e output2.csv -H "User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)" -n 1000 -c 1000 -k http://news.sina.com.cn

    • 手机浏览器5000个并发,总共5000次请求

    ab -e output5.csv -H "User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; zh-cn; LG-P350 Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 DolphinHDCN/6.1.0" -n 5000 -c 5000 http://news.sina.com.cn

    • 手机浏览器1个并发,总共1次post请求

    ab -e /home/ab/output8.csv -H "User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; zh-cn; LG-P350 Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 DolphinHDCN/6.1.0" -p /home/ab/post.txt -T "application/x-www-form-urlencoded" -n 1 -c 1 http://news.sina.com.cn ,如果有多条记录内容可以写成 test1=a&test2=b。

    post 测试的参数获取方法如下:
    1. F12打开IE开发人员工具,设置用户代理为:“Mozilla/5.0 (Linux; U; Android 2.2.1; zh-cn; LG-P350 Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 DolphinHDCN/6.1.0”(LG-P350上的海豚浏览器 HD 版本6.1.0 Android浏览模式的user agent)
    2.  IE地址栏访问http://news.sina.com.cn 在留言区输入网名、E-Mail和comment,在IE开发人员工具中切换到网络,点击按钮“开始捕获”,然后这个按钮自动变成“停止捕获”,点击页面的“发布”
    3. 页面显示“评论成功”之后,在IE开发人员工具中单击进入“Post”方法,这个URL也是请求URL
    4. 在IE开发人员工具中切到“请求标头”得到参数-T的值即“Content-Type”
    5. 在IE开发人员工具中切到“请求正文”得到参数-p的内容即post文件的内容,将它保存到一个文件即可

    ab 使用注意

    • ab的总请求参数即n的数值范围[1..50000],输入时超出最大值ab不会提示但会在程序中设置总数为这个最大值,它被定义在源码ab.c(\support\ab.c)的宏MAX_REQUESTS;ab的并发参数即c的数值范围[0..20000],这个被定义在源码ab.c(\support\ab.c)的宏 MAX_CONCURRENCY。
    • 在施压过程中需要观察带宽是否是瓶颈
    • Linux(如 Ubuntu Server)/Unix 下用命令apt-get install apache2-utils 安装。
    • Linux/Unix 下运行ApacheBench并发超过1024(有时还不到)报错“socket: Too many open files (24)”,是由于系统限制每个进程打开的最大的文件数为1024,这个可用ulimit -a查看,用ulimit -n改大。系统总限制在/proc/sys/fs/file-max,目前系统使用的文件句柄数量/proc/sys/fs/file-nr,修改/etc/security/limits.conf可以让ulimit的数值永久生效。

     

    ab 参考资料

    分享到:

    历史上的今天:

    C++ 虚函数表 2008年08月08日
    内存泄漏检测工具 2007年08月08日