蓝点工坊(http://www.bluedrum.cn) 创始人,App和嵌入式产品开发。同时也做相应培训和外包工作。 详细介绍 http://pan.baidu.com/s/1y2g88
全部博文(311)
分类: 系统运维
2010-03-29 23:49:22
整理这个主要是为学员的项目需要。我希望学员能自行做一个支持GET的简单WEB服务器,能用各种方法优化其下载性能,需要一个能直观了解性能工具以分析程序是否改进。因此 查到资料 autobench+httpref 组合来测试HTTP服务器性能。我只是现在将资料整理一下,按照自己习惯格式边做边整理一下。
httpref是通过命令行来调用。它有如下参数
httperf --help Usage: httperf [-hdvV] [--add-header S] [--burst-length N] [--client N/N] [--close-with-reset] [--debug N] [--failure-status N] [--help] [--hog] [--http-version S] [--max-connections N] [--max-piped-calls N] [--method S] [--no-host-hdr] [--num-calls N] [--num-conns N] [--period [d|u|e]T1[,T2]] [--port N] [--print-reply [header|body]] [--print-request [header|body]] [--rate X] [--recv-buffer N] [--retry-on-failure] [--send-buffer N] [--server S] [--server-name S] [--session-cookies] [--ssl] [--ssl-ciphers L] [--ssl-no-reuse] [--think-timeout X] [--timeout X] [--uri S] [--verbose] [--version] [--wlog y|n,file] [--wsess N,N,X] [--wsesslog N,X,file] [--wset N,X] |
测试本地嵌入式Web 服务器 BOA性能.
httperf --server 127.0.0.1 --port 8080 --num-conns 200 --timeout 5 --uri /index.html
结果:
Total: connections 200 requests 200 replies 200 test-duration 2.184 s Connection rate: 91.6 conn/s (10.9 ms/conn, <=1 concurrent connections) Request rate: 91.6 req/s (10.9 ms/req) Reply rate [replies/s]: min 0.0 avg 0.0 max 0.0 stddev 0.0 (0 samples) CPU time [s]: user 0.00 system 0.18 (user 0.0% system 8.2% total 8.2%) Errors: total 0 client-timo 0 socket-timo 0 connrefused 0 connreset 0
|
每次设置HTTPerf参数来测试实在麻烦,因此autobench就派上用场了。autobench是一个自动测试工具(用的是Perl脚本),用它来调用httperf来测试,省事多了。在他的官网上,也强调与httperf的配合。
安装时在我的机器上出现如下错误提示
perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "en" are supported and installed on your system. |
这是perl 常见安装问题,我的解决方法是手工设定两个环境变量
export LC_ALL=en_US
export LANGUAGE=en_US
autobench 调用httperf 方法,在其官网给出一些样例了。
2.1单机测试模式
测试单台主机,以下是官网样例
autobench --single_host --host1 --uri1 /10K --quiet \
--low_rate 20 --high_rate 200 --rate_step 20 --num_call 10 \
--num_conn 5000 --timeout 5 --file results.tsv
其参数含义
对boa 的进行自动测试。
autobench --single_host --host1 127.0.0.1 --uri1 /index.html --port1 8080 --quiet --low_rate 20 --high_rate 200 --rate_step 20 --num_call 1 --num_conn 500 --timeout 5 --file results.tsv
tsv文件应该是csv格式的,这是我的BOA测试结果
dem_req_rate req_rate_127.0.0.1 con_rate_127.0.0.1 min_rep_rate_127.0.0.1 avg_rep_rate_127.0.0.1 max_rep_rate_127.0.0.1 stddev_rep_rate_127.0.0.1 resp_time_127.0.0.1 net_io_127.0.0.1 errors_127.0.0.1 20 20.0 20.0 20.0 20.0 20.0 0.0 15.1 838.8 0 40 39.8 39.8 40.0 40.0 40.0 0.0 25.2 1664.8 0 60 60.1 60.1 54.5 54.5 54.5 0.0 64.6 2515.5 0 80 64.6 64.6 51.6 51.6 51.6 0.0 587.5 2702.5 0 100 71.8 71.8 24.6 24.6 24.6 0.0 919.8 3007.3 0 120 67.4 67.4 23.8 23.8 23.8 0.0 1221.9 2822.0 0 140 68.0 68.0 25.2 25.2 25.2 0.0 1210.9 2845.7 0 160 79.9 79.9 10.8 10.8 10.8 0.0 1485.2 3346.1 0 180 63.1 63.1 1.4 1.4 1.4 0.0 1629.4 2640.4 0 200 67.3 67.3 1.4 1.4 1.4 0.0 2785.8 2810.9 0.200400801603206 |
2.2 双机测试模式
autobench 还能做两机对比测试,这样可以在同等网络条件下,测试两台服务器性能。它主要用增加几个参数
关掉 --single_host参数,增加 --host2 --uri2 --port2 几个参数即可。
3.输出测试图形
tsv格式还是不直观,如果输出图形结果,将更加有直观。autobench建议用gnuplot来输出相应图形.一个科学绘图图形包。
3.1 失败结果(autobech与最新版不兼容)
tar: gnuplot-4.4.0/lisp: time stamp 2010-03-14 05:28:45 is 983592 s in the future
tar: gnuplot-4.4.0: time stamp 2010-03-14 05:28:44 is 983591 s in the future
autobench 使用 bench2graph来生成图形。
执行 bench2graph results.tsv results.png 按网上提示生成bench2png.(直接执行bench2graph 无法生成PNG)
去掉 bench2png 的77行的 echo set data style linespoints >> gnuplot.cmd
因为4.4版本不支持 set data style 选项提示
set data style linespoints ^ "gnuplot.cmd", line 6: Unrecognized option. See 'help set'. |
生成输出图形
bench2png results.tsv results.png
3.2 成功的版本
这个图没有曲线?感觉不对换成网上显示成功的gnuplot-4.2.0
cp /usr/local/bin/bench2graph /usr/local/bin/bench2png
sed -i 's/postscript color/png xffffff/g' /usr/local/bin/bench2png
注意这里一定要打开echo set data style linespoints >> gnuplot.cmd
bench2png results.tsv results.png
生成结果
chinaunix网友2010-12-02 17:26:34
无语了,大哥你 man bench2graph 行不, 浪费我半天时间 bench2graph(1) bench2graph(1) NAME bench2graph - draws Postscript graphs from Autobench output (using gnuplot) SYNOPSIS bench2graph file outfile [col1 col2 col3...] DESCRIPTION bench2graph takes a TSV format autobench results file, and uses gnuplot to graph the results, producing output in Postscript.