免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1871 | 回复: 6
打印 上一主题 下一主题

perl 多个日志文件统计效率 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-07-10 13:26 |只看该作者 |倒序浏览
本帖最后由 soulsnake 于 2013-07-10 15:06 编辑

环境大概是 一个list 表  是域名 大概几十个 比如 www.1.com 2.com

日志文件格式
1373274309.062      0 115.196.219.102 TCP_MEM_HIT/200 1377 GET http://www.1.net/images/new/fandui.gif - NONE/- image/gif
1373274309.064      0 122.237.34.58 TCP_MEM_HIT/200 6366 GET http://www.2.com/myupload/thumb/51d840644da81.jpg - NONE/- image/jpeg
1373274309.067     38 61.183.53.7 TCP_MISS/200 25747 GET http://www.1.com/mj/40124.html - FIRST_UP_PARENT/wwwyxbaocom text/html
1373274309.071      0 110.77.54.234 TCP_MEM_HIT/200 3876 GET http://www.w.com/css/reset.css - NONE/- text/css
1373274309.073      0 171.8.212.104 TCP_MEM_HIT/200 971 GET http://1.com/images/c_recbgs_gray.png - NONE/- image/png
1373274309.074      0 118.186.8.88 TCP_MEM_HIT/200 28765 GET http://2.com/UploadFile/2013-5/2013517172844.jpg - NONE/- image/jpeg

30个日志文件 要根据list内容分割归类这30个日志文件 并统计。
还有现在用单线程的话 统计这600M文件大概需要3分钟,但是日志是5分钟要分析一次,是不是我算法写的有问题 我现在是根据list表将30个日志的内容正则 ,push到一个hash里 在做排序和运算处理 。

论坛徽章:
0
2 [报告]
发表于 2013-07-10 13:29 |只看该作者
还有个效率问题 请教 list和日志文件比对时


open (LIST,"list") or die "can't open List file";
@LIST=<LIST>;
close LIST;
my %hash;
for (my $i=0;$i<$node_num;$i++){
        open (LOG,"bzip2 -cdv access$i.bz2 |") or die "can't open access$i log file";
        #undef %test;
        @LOG = <LOG>;
        foreach  $domain(@LIST){
                chomp $domain;
                foreach $data (@LOG){
                        push @{$hash{$domain}},$data if ($data =~ /http:\/\/$domain/);
                }
        close LOG;
        }
}

这步执行效率很慢 有没有更好的写法

论坛徽章:
3
摩羯座
日期:2013-09-04 12:01:36申猴
日期:2013-10-23 12:12:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34
3 [报告]
发表于 2013-07-10 13:40 |只看该作者
你每5分钟 是不是要把全部日志分析一边嘛?保过5分钟前已经分析过的?
还是每5分钟就分析增量的日志信息?我们以前运维做日志分析基本是在晚上0点以后 将当天的日志归档,然后我再去对这些日志做分析,如果实时完成分析的话可能对服务器造成不小的压力,特别是大数据量的时候

论坛徽章:
0
4 [报告]
发表于 2013-07-10 13:50 |只看该作者
回复 3# grshrd49


    每次分析增量的日志信息 就是前5分钟的

论坛徽章:
3
摩羯座
日期:2013-09-04 12:01:36申猴
日期:2013-10-23 12:12:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34
5 [报告]
发表于 2013-07-10 14:04 |只看该作者
如果是许多进程或服务器产生的日志 你不可能在短时间内将他们分析完,就好比来了10个病人但是只有一个医生,你说要让医生用看一个病人的时间去看完10个病人。
如果使用多线程的话一定要小心,特别是数据传递噢!

论坛徽章:
3
未羊
日期:2013-11-18 15:17:06酉鸡
日期:2013-12-06 17:07:16天蝎座
日期:2014-06-11 12:37:07
6 [报告]
发表于 2013-07-10 17:15 |只看该作者
600M 要3分钟????

你确定???。。。

你怎么写的啊?发出来看看。。

不可能这么慢的啊。。1G的日志最高也就3分钟啊。。。

论坛徽章:
0
7 [报告]
发表于 2013-07-12 15:33 |只看该作者
发code啊,没图没真相
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP