2006/03/10

code:awk 实例解析 使用wget和awk对blogcn的十万数据进行测试分析

使用wget和awk对***站点的十万数据进行测试分析
结果和过程如下
tags:awk,wget,shell,linux,code
wget 采用 --spider 非下载式任务
-------------------------------------------------------------
测试结果分析
----------------------------------------------------
wget效率
>>> 100003.0/((10*60+53)*60+4)
2.5521386280114333
请求成功率
>>> 99983/100003.0
0.99980000599982
页面成功率
>>> 93496/100003.0
0.93493195204143875
短数据
>>> 2821/100003.0
0.02820915372538824
<10k
>>> 65654/100003.0
0.65652030439086828
<20k
>>> 31732/100003.0
0.31731048068557943
----------------------------------------------------
测试结果汇总
------------------------------------------------------
url xac xab sum
-------------------------------------------------
任务数 8391 41612 50000 100003
时间 1:15:32 7:59:25 8:38:7 10:53:04
请求数 8391 41617 50003 100011
请求成功数 8389 41611 49983 99983
获取失败数 数据长度为零 612 2837 3038 6487
成功数 数据长度不为零 7777 38774 46945 93496
短数据数 数据长度小于1k 108 945 1768 2821
<10k 6898 31631 27125 65654
<30k 0 0 0 0
=2xk 3737 16541 11454 31732
=1xk 3161 15090 15671 33992
awk 实例解析
#将获取的url列表改名
$ cp xxx.xxx.xxx_abc.txt url.ls
#查看一下列表
$ less url.ls #u,p,q --向上翻页,向下翻页,推出
laviniahsiao
ostrich
wolingwu_2002
weizi
xingxingyu
congolin
inkstone
iui
yuyan
bluemoor
...
#截断进行测试
$ sed -n "20,30p" url.ls > sub.ls
#拼接相对url为绝对url地址
# -- 此处不使用 -B base 是因为 -B只能用在比较简单的替换上
#建立干净的工作环境
$ mkdir awk_wget
$ mv url.ls awk_wget/
$ mv sub.* awk_wget/
$ cd awk_wget/
$ ll
-rw-rw-r-- 1 tester tester 100 Mar 8 23:40 sub.ls
-rw-rw-r-- 1 tester tester 496 Mar 8 23:43 sub.wg
-rw-rw-r-- 1 tester tester 997676 Mar 8 23:31 url.ls
#获取分析数据 log.txt
$ wget -i sub.wg -o log.txt -x -P wglist &
# 使用wget根据-i sub.wg中提供的url列表获取网络数据,输出wget操作日志到-o log.txt中,数据保存到-x根据 url 在-P wglist目录下创建子目录
下 & 命令在后台运行
# 使用非下载模式
$ wget -i sub.wg -o log_sp.txt --spider & #--spider 不下载数据
# 使用简单信息模式
$ wget -i sub.wg -o log_nv.txt -nv --spider & # -nv 不记录详细信息
$ tail -f log.txt #查看log.txt文件的最后十行数据,并-f实时反映log.txt的最新更新
# 需求
1、测试目标地址正确率 2xx
2、测试目标地址错误率 !2xx
3、分析目标地址出错原因 4xx 5xx
4、分析目标地址跳转情况 3xx
# end
任务一、以最快的效率测试正确率
# 测试 跳转地址的 -nv 日志

$ wget https://mail.google.com -nv --spider
200 OK

$ wget https://mail.google.com --spider
--00:02:27-- https://mail.google.com/...
HTTP request sent, awaiting response... 302 Moved Temporarily ...

# 结论 使用 -nv 可以最快的方式完成测试 但
$ date --date='2002-08-28 23:55:32 +0800' +'hello %Y/%m/%d %H:%M:%S %z'
hello 2002/08/28 23:55:32 +0800
$date --date='2002-08-28 23:55:32 +0800' +'%x %T'
08/28/2002 23:55:32
#!没找到毫秒郁闷
#呵呵 发现可以使用time 进行效率分析
$ time wget -i sub.wg -o log_nv.txt -nv --spider &
real 0m12.760s
user 0m0.003s
sys 0m0.024s
$ time wget -i sub.wg -o log_sp.txt --spider &
real 0m5.073s
user 0m0.002s
sys 0m0.024s
$ time wget -i sub.wg -o log.txt -x -P down &
real 0m17.110s
user 0m0.007s
sys 0m0.038s
#跑了好几次发现工作环境的网络太不稳定了 所以数据不大可靠,等有时间进行一次大数据量的测试吧
#不过通过输出来傻瓜式分析,效率最高的是-nv --spider, --spider, -nv ,不带 -nv和 --spider

#

$ wc url.ls
100000 100000 997676 url.ls

$ time awk '{print "http://www. *** .com/rss2.asp?blog="$1}' url.ls >url.wg

real 0m0.210s
user 0m0.164s
sys 0m0.046s

$ wc url.wg
100000 100000 4597676 url.wg
# 过滤每个任务的开始时间
$ awk '/--[0-9]/{print $1}' log_url.txt >time.txt
# 获取已完成的任务数
$ wc -l time.txt
1510 time.txt
# 获取开始的时间
$ head -n 5 time.txt
--01:19:34--
--01:19:35--
--01:19:35--
--01:19:35--
--01:19:36--
# 获取结束的时间
$ tail -n 5 time.txt
--01:37:01--
--01:37:02--
--01:37:02--
--01:37:02--
--01:37:03--
# 计算平均间隔
#使用python 当计算器
python
>>> b=(1*60+19)*60+34 #begin second
>>> e=(1*60+37)*60+1

没有评论: