It seems that viruses CAN slip through MailScanner under high load!
Joan Bryan
joan.bryan at KCL.AC.UK
Wed Sep 3 14:41:59 IST 2003
Hi
Bad news I'm afraid. We've just upgraded to MailScanner 4.23-11 and
viruses are still slipping through. Admittedly our server is still
under load.
Thanks for any help.
Joan
On Fri, 29 Aug 2003 03:16:47 +0100 Brian Hoy <brian.hoy at OPUS.CO.NZ>
wrote:
> Hi all,
>
> Thanks to everyone for their comments and advice. It is very much
> appreciated. And especially to Julian for finding and fixing the problem so
> quickly!
>
> Our sendmail config does have the load settings configured that many of you
> mentioned, but still the mail was flowing in! The input queue was growing
> faster than Mailscanner could scan it, and the problem just kept compounding.
>
> The reason is that the "load average" stats are not always a good measure of
> the real stress that the machine is under. If a machine is heavily using
> swap space, then the disks and motherboard I/O bandwidth are being consumed
> (and CPU also if the disks are ATA, rather than SCSI), yet no useful work is
> being done.
>
> If a process is waiting on a page fault, I do not think that it is placed in
> the OS's run queue until the page is loaded (and another page swapped out -
> still more disk I/O!). If this is true then the load average does not
> increase, yet the machine is clearly starting to struggle with the load.
> This is what happened to us the other day.
>
> If you want to experiment with this idea, compile this C program:
>
> // Compile with gcc -o vm_tester vm_tester.c
> //
> #include <stdio.h>
> #include <malloc.h>
>
> #define NUM_PASSES 10
> #define MB_TO_ALLOC 128
> #define BYTES_TO_ALLOC (MB_TO_ALLOC * 1024*1024)
>
> int main(void)
> {
> char *mem;
> int pass, r, c;
>
> if ((mem = (char *) malloc(BYTES_TO_ALLOC)) == NULL)
> {
> printf("malloc() failed");
> exit(-1);
> }
>
> for (pass=0; pass<NUM_PASSES; pass++)
> {
> for (c=0; c<4096; c++)
> {
> for (r=0; r<BYTES_TO_ALLOC/4096; r++)
> {
> mem[r*4096 + c]++;
> }
> }
> }
>
> return 0;
> }
>
> // -----------------------------------------------
>
> It allocates 128M of RAM, and increments bytes in a way that generates as
> many page faults as possible. As an initial suggestion, run as many of
> these programs as needed to consume all your RAM and watch your other
> processes struggle to get a slice of the CPU. BTW, don't do this on a
> production server, or try to consume more memory than your total VM - you
> have been warned!
>
> Use top and vmstat to watch things. If you start running more of these
> programs, then you find that the load average does not increase that much,
> but your disks are flat out, and machine responsiveness goes right out the
> window (esp on ATA disks).
>
> I still think my suggestion (in my first post) for an "unfair" way of
> selecting messages for scanning under "high load" has merit. When our mail
> gateway was stressed out the other day, I was using strace to monitor the
> system calls in the MailScanner processes, and they were spending 5-30mins
> just doing the stat() calls before locking messages for scanning.
>
> When you machine is really overloaded, let's do anything to concentrate the
> meagre available resources on clearing the queue in the most expedient fashion.
>
> Perhaps "high load" can be determined by the length of the input queue
> (rather than the misleading system load average), and be user configurable.
>
> For example, if the input queue has in excess of 1000 messages waiting, peel
> off any 30 for scanning. Ensure that no other MailScanner process evaluates
> the length of the queue until a user configurable time has passed (15
> mins?). I know this is easier said than done, but I think it really would
> help when the machine is steaming up shit creek.
>
> Another thought....Sendmail names all it's df and qf files, such that an
> alphabetical listing is sorted by ascending time order too! If the other
> MTAs are the same, then perhaps this fact could be used to remove all the
> stat()s and still meet the fairness algorithm?
>
> Comments anyone?
>
> Regards,
> Brian
----------------------
Joan Bryan
Unix Systems Administrator
Information Systems
Telephone: +44 (0) 20 7848 2671
mailto:joan.bryan at kcl.ac.uk
More information about the MailScanner
mailing list