[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: clamd = 100 % CPU



Le Tue, 15 Apr 2008 17:41:20 +0200 (CEST)
"GREG" <pub@daupheus.com> a écrit:

> Bonjour,
> 
> Je suis sous Debian Etch 64 actuellement sur un serveur de prod qui
> héberge principalement des boites mails.
> (postfix,spamassassin,clamav,amavis-new)
> 
> Tout marche bien sauf que le processus clamd consomme de façon non
> systématique/périodique 100 % du CPU. Il n'y a bien entendu rien dans les
> logs  (/var/log/messages /var/log/mail.err /var/log/mail.log ...)
> 
> Avez vous déjà eu cette problématique ? j'ai cherché dans les "bugs
> reports" de clamav mais rien de probant.

clamav est devenu très consommateur de ressource au point que cela nécessite
un serveur musclé. Si ça t'intéresse j'ai mis au point la technique suivante
pour limiter le nombre de scans:

Modification de /etc/exiscan/exiscan.conf en mettant
$scannerex="/usr/local/bin/clamwrapper";

Le fichier clamwrapper est le suivant:
-----------------------------
#!/bin/sh
FLAGS=" --unzip --unrar --arj --no-summary "
CLAM=/usr/bin/clamscan
DIR=$1
FICHIER=`echo $DIR | sed -e 's/-tmp$/-complete/'`
EXISTE=0
grep -E "for.*@" $FICHIER | head -n 1 >> /var/log/clam.log
DEST=`grep -E "for.*@" $FICHIER | head -n 1 | sed -e 's/^.*for[ <]*\([^@]*\)@.*$/\1/'`
echo -n $DEST >> /var/log/clam.log
FINAL=`echo $DEST | sed -e 's/^\([^@]*\)@.*$/\1/'`
if [ -f /var/filtre/$FINAL ] ; then
    EXISTE=$[$EXISTE+1]
fi
DEST=`grep To: $FICHIER | head -n 1 | sed -e 's/To: //'`
echo -n " - "$DEST" " >> /var/log/clam.log
while `echo $DEST | grep -q  ','` ; do
    DESTS=`echo $DEST | sed -e 's/^[^,]*, *\(.*\)$/\1/'`
    DESTD=`echo $DEST | sed -e 's/^\([^,]*\), *.*$/\1/'`
    DESTV=`echo $DESTD | sed -e 's/^.*<\([^>]*\)>.*/\1/'`
    FINAL=`echo $DESTV | sed -e 's/^\([^@]*\)@.*$/\1/'`
    echo -n " "$FINAL >> /var/log/clam.log
    if [ -f /var/filtre/$FINAL ] ; then
        EXISTE=$[$EXISTE+1]
    fi
    DEST=$DESTS
done
DESTV=`echo $DEST | sed -e 's/^.*<\([^>]*\)>.*/\1/'`
FINAL=`echo $DESTV | sed -e 's/^\([^@]*\)@.*$/\1/'`
echo -n " "$FINAL >> /var/log/clam.log
if [ -f /var/filtre/$FINAL ] ; then
        EXISTE=$[$EXISTE+1]
fi
if [ ! 0 -eq $EXISTE ] ; then
    echo " : YES" >> /var/log/clam.log
    $CLAM $FLAGS $DIR
else
    echo " : NO" >> /var/log/clam.log
fi
-------------------------------------------------------
En gros il regarde à qui est destiné le message et ne le scanne que si l'utilisateur a 
une entrée dans /var/filtre. Cela me permet de ne pas surcharger la machine avec
les spams ou tout simplement mes messages personnels (je me fous des virus).

Cela a grandement décharger ma machine.


François Boisson


> 
> Merci par avance,
> 
> Greg
> 
> 
> 
> -- 
> Lisez la FAQ de la liste avant de poser une question :
> http://wiki.debian.org/DebFrFrenchLists
> Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
> "Reply-To:"
> 
> To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
> 


Reply to: