Hi.
Running here amavisd-new 2.3.3 with quarantine to MySQL 4.1.14 InnoDB
under Linux. Postfix, SA and ClamAV complete the setup.

Every night the quarantine cleanup script is run. A "du -ks" of MySQL
quarantine DB says 13.5GB are occupied.

During the nightly cleanup I see from MRTG that the disk occupation
grows from 20GB to 31GB, that is +11GB.

This is what the "slow-queries" log reports (queries are taken from amavis docs):

# Time: 060113  4:07:00
# [EMAIL PROTECTED]: root[root] @ localhost []
# Query_time: 130  Lock_time: 0  Rows_sent: 0  Rows_examined: 0
SET timestamp=1137121620;
DELETE FROM msgs WHERE (time_num < UNIX_TIMESTAMP() - 30*24*60*60) OR
(time_num < UNIX_TIMESTAMP() - 15*24*60*60 AND (content
='V' OR (content='S' AND spam_level>20))) OR (time_num <
UNIX_TIMESTAMP() - 60*60 AND content IS NULL);

# Time: 060113  4:24:22
# [EMAIL PROTECTED]: root[root] @ localhost []
# Query_time: 1042  Lock_time: 0  Rows_sent: 0  Rows_examined: 2676122
DELETE quarantine FROM quarantine LEFT JOIN msgs USING(mail_id)
  WHERE msgs.mail_id IS NULL;

# Time: 060113  4:46:11
# [EMAIL PROTECTED]: root[root] @ localhost []
# Query_time: 1309  Lock_time: 0  Rows_sent: 0  Rows_examined: 4693355
DELETE msgrcpt    FROM msgrcpt    LEFT JOIN msgs USING(mail_id)
  WHERE msgs.mail_id IS NULL;

# Time: 060113  4:54:38
# [EMAIL PROTECTED]: root[root] @ localhost []
# Query_time: 506  Lock_time: 0  Rows_sent: 0  Rows_examined: 710813
DELETE FROM maddr
  WHERE NOT EXISTS (SELECT sid FROM msgs    WHERE sid=id)
    AND NOT EXISTS (SELECT rid FROM msgrcpt WHERE rid=id);

So, the last query ends at 04:54:38, but then something else happens and eats up the disk space.

I've monitored throughout the weekend processes and disk space at 5 minutes intervals, and noticed that the cron.daily runs much longer.

The mysql process forked by cron.daily at 04:07 goes on and on until 05:35, long after the last DELETE has officially ended. The disk occupation peak occurs at 05:35. At the next check (05:40), cron.daily is gone and disk back to the normal value.

This is probably something related to the MySQL transactional engine, but I'm not an expert there. Should I turn off transactions when cleaning quarantine? (How?) Anybody else noticed this behaviour?

I cannot really double the disk space just to have room for the cleanup, whose action should free space instead!

I'm willing to run other tests you might suggest, but only overnight and without human monitor. I cannot run the quarantine cleanup script during working hours because DB timeouts on amavisd cause deferred messages.

Paolo



-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
AMaViS-user mailing list
AMaViS-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/amavis-user
AMaViS-FAQ:http://www.amavis.org/amavis-faq.php3
AMaViS-HowTos:http://www.amavis.org/howto/

Reply via email to