Re: [Exim] HELP! Exim processes are running away with 100+M…

Top Page
Delete this message
Reply to this message
Author: Michael J. Tubby B.Sc \(Hons\) G8TIC
Date:  
To: exim-users, Trevor Sky Garside
Subject: Re: [Exim] HELP! Exim processes are running away with 100+MB of RAM, crashing my mail servers!
----- Original Message -----
From: "Philip Hazel" <ph10@???>
To: "Trevor Sky Garside" <trevor@???>
Cc: "Trevor Sky Garside" <trevor@???>; <exim-users@???>
Sent: Wednesday, January 30, 2002 2:28 PM
Subject: Re: [Exim] HELP! Exim processes are running away with 100+MB of
RAM, crashing my mail servers!


> On Wed, 30 Jan 2002, Trevor Sky Garside wrote:
>
> > Short story: it's fixed.
>
> Good.
>
> > I was transferring a rediculous amount of data from the MySQL server
> > without realizing it. My 'local_domains' line was to blame:
> >
> > local_domains = "mysql;SELECT domain FROM user WHERE domain='$key'"
> >
> > I was getting 4000+ rows back each time, because almost every query was

on
> > the main domain. It looks like, even though Exim doesn't care what data
> > it gets back, it fetches each row.
>
> That's because the modules that implement the lookups don't know from
> where they are being called. They always do the same job.
>
> I confess that I never imagined people would store local_domains in
> databases, because that list is consulted very frequently.
>
> This has made me think about the possibility of a different lookup
> interface that says "don't bother with the data", but in fact in Exim 4
> things are different anyway. There is no longer a local_domains option;
> instead there is more use of the "domains" option on routers. And for
> that option, the data *is* required, because it gets put into the
> $domain_data variable.
>


Erm, we do it also, thusly:

    local_domains = mysql;select Domain from MailForward where Domain
=\'$key\' : thebe.thorcom.net


on a system which runs as a email handler for a web portal site... and then
deliver
mail using directors:

    mysql_1:
    driver=aliasfile
    search_type = mysql
    query = "select alias from MailForward where Domain='$domain' and
LocalPart='$local_part'"
    user = nobody
    forbid_pipe = true
    forbid_file = true


    mysql_2:
    driver=aliasfile
    search_type = mysql
    query = "select alias from MailForward where Domain='$domain' and
LocalPart='*'"
    user = nobody
    forbid_pipe = true
    forbid_file = true



Spec. for our project says 15,000 domains (distinct ones) and up to 100
email
addresses per domain.

Phil... do you forsee any problems scaling up to this many local domains
read
from a database... we're rather relying on it to just work and our machines
are
little RedRaks with Celeron 500MHz CPUs and 64Mb RAM.

Nice to see that people have found ways to use to use software that the
author
hadn't dreamed of :~)


Mike