Re: Regular expressions

Stephen Vaughan <[email protected]>
Newsgroups gmane.mail.perdition.user
Message-ID <[email protected]>
nevermind, needed to be query="\\d"

thankyou for your time Simon.

Stephen

On Wed, Jan 21, 2009 at 2:42 PM, Simon Horman <[email protected]> wrote:

> On Wed, Jan 21, 2009 at 12:48:31PM +1100, Stephen Vaughan wrote:
> > Hi Simon,
> >
> > Basically we have a webmail service, which connects to 4 different IMAP
> > servers via perdition. As I said there is 13,000+ entries in popmap.re,
> > using this format: (.*)@domain.com: 123.123.123.123
> >
> > We have a script which reloads perdition every hour as changes are made
> to
> > popmap.re frequently. The problem is when a user first attempts to login
> > they experience a delay in authenticating. Each time this happens the
> > perdition.imap4 process consumes 100% cpu for about 60 seconds, after
> about
> > 30 seconds there are 3 perdition.imap4 processes all consuming cpu usage.
> >
> > I suspect that because the contents of popmap.re is so large, perdition
> is
> > taking longer to process the request.
>
> Hi Stephen,
>
> I'm a little surprised that perdition is slow in the way that you describe,
> but I'm not surprised that it is slow in some way with your configuration.
>
> When I wrote the popre code (which was rather a long time ago) I wasn't
> thinking in terms of it scaling to 13,000+ entries. The implementation
> is rather simple and works in two parts as follows:
>
> on load or reload:
>  Run through the popmap.re file and for each entry compile it as a regex
>  All tresultsand store the result in an array
>
> on lookup:
>  Run through the array in order, checking each regex in turn.
>  Return when a match is fine.
>
> So basically both load/reload and lookup is O(n), where n=13,000+.
> Clearly not sastifactory.
>
> Do you actually need the regex? If you are just mapping
> domain names to IP addresses, then I think that you can use
> the MySQL, PostgreSQL, ODBC, BDB, GDBD, LDAP or even NIS module.
>
> The trick is to set the query key to so that only the domain
> name supplied by the username is passed to the db module to
> perform the lookup.
>
> This is done by setting query_key in the perdition configuration file
> or on the command line:
>
> query_key=\d
>
> --
> Simon Horman
>  VA Linux Systems Japan K.K., Sydney, Australia Satellite Office
>  H: www.vergenet.net/~horms/ <http://www.vergenet.net/%7Ehorms/>
>   W: www.valinux.co.jp/en
>
>


-- 
Best Regards,
Stephen

______________________________________________
Perdition-users mailing list
[email protected]
http://lists.vergenet.net/listinfo/perdition-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.