Kang, saya sudah uncompressed datanya menjadi 1.9GB sehingga ndak perlu "gunzip -c" lagi. Perl-nya juga saya bikin simpel, tapi koq tetep killed ya ? apa memang perl ndak bisa buka file yang besar ?

---perlkilled.pl---
#!/usr/bin/perl -w

use strict;

$|=1;

my $LOGF=$ARGV[0];
open(LOG,"$LOGF") || die "Can't open file $LOGF: $!\n";
foreach (<LOG>) {
       print "x";
}
close (LOG);
print "finish!!\n";
---

---error---
[EMAIL PROTECTED] ~]$ ./perlkilled.pl /var/www/html/reports/logs/uncompr_20080226.log
Killed
[EMAIL PROTECTED] ~]# free -m
            total       used       free     shared    buffers     cached
Mem:          2027        655       1372          0          1        599
-/+ buffers/cache:         53       1973
Swap:          511         23        488
[EMAIL PROTECTED] ~]#
---

Help!




Eko Prasetya wrote:
Darn, baca perl susah amat ya.

Anyhow, problemnya out of memory, Anda tentu sudah tahu.

Kemungkinan sih dari open() yang gunzip itu. Saya takutnya kalau gunzip() itu
dikirim ke pipe, dan open() di situ harus simpan semua datanya di buffer, 2GB
is a big number.

Kalau mau di coba, setelah open(gunzip), coba print() sesuatu. Coba cari tahu
apakah open() nya berhasil atau tidak.

Kalau misalkan tidak berhasil, mungkin sebaiknya file-nya di gunzip dulu, baru
di open() hasil uncompressed-nya, dengan asumsi hard-drive-nya masih punya
free-space banyak.


KOkon.

On Fri, Apr 18, 2008 at 2:10 AM, dv0r4k <[EMAIL PROTECTED]> wrote:
Halo semua,
 Saya membuat perl script untuk ngebaca log apache terkompresi dgn gzip.
Jika skrip ini saya jalankan ke log ukuran kecil script tsb berjalan dgn
baik. Tapi begitu saya jalanin di ke file besar (100MB compressed, 2GB
uncompressed), script tsb akan terbunuh (sepertinya oleh OS (ulimit?)).

 Kenapa yak ?? Mungkin cara open() saya salah ?? help!

 EF


 .:cnt_sssn.pl:.
 ======================================================
 #!/usr/bin/perl -w

 use strict;
 use Time::Local;

 $|=1;

 my $SESSION=24;                                 # to define 1 session, in
minutes.
 my $LOGF=$ARGV[0];

 my @uips;
 my $uiplmt=500;                         # limit before it flush to file
 my $uipflcntr = 0;
 my $sesslim = $SESSION * 60;
 my $totalsession;

 open(LOG,"gunzip -c $LOGF | ") || die "Can't open file $LOGF: $!\n";
 foreach (<LOG>) {
       chomp;
       my @rawln = split(/\s{1,}/,$_,6);
       next if (not defined($rawln[5]));
       my ($ips,$timing,$url) = ($rawln[5] =~ m#^(.*) \[(.*)\] (".*)#);
       push(@uips,$ips) if ( ! grep(/$ips/,@uips) );
       if ($#uips > $uiplmt) {
               print "UIP reached $uiplmt, flush to file
.uip.$uipflcntr.\n";
               $,="\n";
               open(UIPFL,">> .uip.$uipflcntr");
               print UIPFL @uips;
               close(UIPFL);
               undef @uips;
               $uipflcntr++;
       }
 }
 close(LOG);

 print "finish\n";
 ======================================================


 Ketika di running:::
 ======================================================
 [EMAIL PROTECTED] ~]$ ./cnt_sssn.pl /var/www/html/reports/logs/20071012.log.gz
 finish
 [EMAIL PROTECTED] ~]$ ./cnt_sssn.pl /var/www/html/reports/logs/20080226.log.gz
 Killed
 [EMAIL PROTECTED] ~]$ ll -h
/var/www/html/reports/logs/{20071012.log.gz,20080226.log.gz}
 -rw-rw-r--  1 batch devel  22K Oct 12  2007
/var/www/html/reports/logs/20071012.log.gz
 -rw-rw-r--  1 batch root  107M Feb 26 23:59
/var/www/html/reports/logs/20080226.log.gz
 [EMAIL PROTECTED] ~]$ dmesg | tail
 HighMem: 60*4kB 46*8kB 10*16kB 2*32kB 0*64kB 0*128kB 0*256kB 1*512kB
0*1024kB 0*2048kB 0*4096kB = 1344kB
 Swap cache: add 5787810, delete 5780748, find 8492876/8794717, race 0+3
 0 bounce buffer pages
 Free swap:            0kB
 524282 pages of RAM
 294906 pages of HIGHMEM
 5289 reserved pages
 31741 pages shared
 7062 pages swap cached
 Out of Memory: Killed process 20900 (cnt_sssn.pl).
 [EMAIL PROTECTED] ~]$
 ======================================================

 contoh data (log apache):::
 ======================================================
 Oct 12 23:51:15 10.0.0.2 ip_log: 10.0.0.5 "- -", - - [12/Oct/2007:23:50:50
+0800] "GET / HTTP/1.0" 200 8784 "-" "check_http/1.104 (nagios-plugins
1.4.9)"
 Oct 12 23:53:37 10.0.0.3 ip_log: 10.0.0.5 "- -", - - [12/Oct/2007:23:53:24
+0800] "GET / HTTP/1.0" 200 8784 "-" "check_http/1.104 (nagios-plugins
1.4.9)"
 Oct 12 23:54:15 10.0.0.2 ip_log: 10.0.0.5 "- -", - - [12/Oct/2007:23:53:50
+0800] "GET / HTTP/1.0" 200 8784 "-" "check_http/1.104 (nagios-plugins
1.4.9)"
 ======================================================



--
Berhenti langganan: [EMAIL PROTECTED]
Arsip dan info: http://linux.or.id/milis

Kirim email ke