[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