免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1660 | 回复: 3

日志分析计算效率问题 [复制链接]

论坛徽章:
0
发表于 2012-05-11 20:52 |显示全部楼层
日志文件,每分钟大概1G的文件,需要分析入库

文件格式
xip:1.1.1.1 yip:2.2.2.2 zip:3.3.3.3 time(3434) /?abid=3455
xip:1.1.1.1 yip:2.2.2.2 zip:3.3.3.3 time(3434) /?abid=3455
xip:2.1.1.1 yip:2.2.2.2 zip:3.3.3.3 time(3434) /?abid=3455
xip:2.1.1.1 yip:2.2.2.2 zip:3.3.3.3 time(3434) /?abid=3455
xip:3.1.1.1 yip:2.2.2.2 zip:3.3.3.3 time(3434) /?abid=3455
xip:3.1.1.1 yip:2.2.2.2 zip:3.3.3.3 time(3434) /?abid=3455
xip:1.1.1.1 yip:2.2.2.2 zip:3.3.3.3 time(3434) /?abid=3455
。。。。。
。。。。。
。。。。。


日志量太大,需要对每分钟的日志进行处理后,进行入库。

表结构
xip         num     time
1.1.1.1   3          3434

xip 列为xip中的独立ip(不重复)
num 列为对应ip的重复次数
time 列为平均的响应时间

怎么实现效率比较高

我现在的处理方法:
匹配
        start = line.find('xip:')
        end = start + line[start:].find(' ')
        sip = line[start+4:end]

然后把需要的数据都放进列表中
val1 = xip,time
l1.append(val1)

然后进行计算每个ip的重复次数 和 平均响应时间
d1={};
d2={};
for xip,avg in l1:
   if xip in d1:
      d1[xip] = int(d1[xip])+int(avg);
      d2[xip] = d2[xip]+1;
   else:
      d1[xip] = avg;
      d2[xip] = 1;
l2=[];
for xip in d1:
   val2=xip,d2[xip],int(d1[xip])/int(d2[xip])
   l2.append(val2)
   print val2

论坛徽章:
11
技术图书徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
发表于 2012-05-11 22:11 |显示全部楼层
回复 1# moartel
有没有统计你这种方法的处理能力是多少?


   

论坛徽章:
11
技术图书徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
发表于 2012-05-11 22:59 |显示全部楼层
本帖最后由 timespace 于 2012-05-11 23:19 编辑

回复 1# moartel
1.关键要看你原方案的处理能力,确定瓶颈在IO还是CPU。

2.即使不管1是何情形,原代码也有不必要的冗余:l1没必要存在;无需两个dict来保存次数与时间

info = {} # ip为key,(次数,时间之和)为value

for line in f:
  xip, time = get_value(line) #提取字段后,直接处理,无需中间数组保存

  cnt, total = info.get(xip, (0, 0))
  info[xip] = cnt + 1, total + time

#然后遍历info,输出次数,总时间/次数=平均时间
  



   

论坛徽章:
0
发表于 2012-05-12 07:38 |显示全部楼层
回复 3# timespace

去掉了l1
去掉了d2

988M的日志,1200351 行

处理时间从22s,提升到14s

cpu 是瓶颈。

感谢。

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP