[FUG-BR] Script perl consome muito CPU

Fernando Buzon Macedo fernando em bebedouro.sp.gov.br
Terça Agosto 17 10:06:10 BRT 2010


Ola pessoal, não sei se alguém já utilizou isso, mas eu vi no contrib do
dansguardian um script Perl que funciona com FIFO, a cada modificação no
arquivo ele faz um insert no banco, o script é esse ai em baixo.

 

Tenho uma aplicação em php pra gerenciar o dansguardian e esse script foi
fundamental na parte de debugar os acessos/permissões. Está rodando, o
servidor não está lento, mas...

 

Eu monitoro com o cacti, no CPU-usage, bate 150, processamento como “user”
agora estou executando ele com o comando “nice”, ele baixou o processamento
do “user” mas agora apareceu o “nice”, mas o total não abaixa.

Pelo que li o “nice” é pra setar prioridades e não pra limitar o
processamento, sendo assim ele realmente não vai baixar o consumo.

 

Será que teria algo a fazer? Pra limitar esse consumo? Ou eu que não devo me
preocupar com isso já que agora com o “Nice” ele tem prioridade baixa sobre
os demais processos?

 

Apesar que tem acesso pra caramba, pra vcs terem uma idéia, eu rotaciono o
log diariamente e o arquivo diário, sem compactar dá em média 90MB.

 

Obrigado a todos.

Fernando - “O Punk nunca morre!”

 

========================================sqllogfifo.pl=======================
=========================

#!/usr/local/bin/perl -w

 

use IO::File;

use DBI;

use strict;

 

my $server="192.168.x.x";

my $port=3306;

my $user="filter";

my $pass="xxxxx";

my $db="filter";

my $table="log";

 

my
$dbh=DBI->connect("DBI:mysql:database=$db;host=$server;port=$port",$user,$pa
ss) or die "Can't connect to db: ", DBI->errstr;

my $sth=$dbh->prepare("INSERT INTO
$table(datetime,ident,ip,url,what,how,size,why,type,filter)VALUES(?,?,?,?,?,
?,?,?,?,?)");

open(FIFO, "< /var/log/dansguardian/access.log") or die "Can't open log
FIFO: $!\n";

LOG: while (1) {

                my $message = <FIFO>;

                next LOG unless defined $message;

                chomp $message;

                chop $message;

                $message = substr $message,1;

 
my($dt,$id,$ip,$url,$what,$how,$size,$a,$why,$c,$d,$type,$f,$filter)=split
/","/,$message;

 
$sth->execute($dt,$id,$ip,$url,$what,$how,$size,$why,$type,$filter);

}

============================================fim=============================
=====================



Mais detalhes sobre a lista de discussão freebsd