Chinaunix

标题: perl 多个日志文件统计效率 [打印本页]

作者: soulsnake    时间: 2013-07-10 13:26
标题: perl 多个日志文件统计效率
本帖最后由 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里 在做排序和运算处理 。
作者: soulsnake    时间: 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;
        }
}

这步执行效率很慢 有没有更好的写法
作者: grshrd49    时间: 2013-07-10 13:40
你每5分钟 是不是要把全部日志分析一边嘛?保过5分钟前已经分析过的?
还是每5分钟就分析增量的日志信息?我们以前运维做日志分析基本是在晚上0点以后 将当天的日志归档,然后我再去对这些日志做分析,如果实时完成分析的话可能对服务器造成不小的压力,特别是大数据量的时候
作者: soulsnake    时间: 2013-07-10 13:50
回复 3# grshrd49


    每次分析增量的日志信息 就是前5分钟的
作者: grshrd49    时间: 2013-07-10 14:04
如果是许多进程或服务器产生的日志 你不可能在短时间内将他们分析完,就好比来了10个病人但是只有一个医生,你说要让医生用看一个病人的时间去看完10个病人。
如果使用多线程的话一定要小心,特别是数据传递噢!
作者: 墨迹哥    时间: 2013-07-10 17:15
600M 要3分钟????

你确定???。。。

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

不可能这么慢的啊。。1G的日志最高也就3分钟啊。。。
作者: dahe_1984    时间: 2013-07-12 15:33
发code啊,没图没真相




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2