You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@spamassassin.apache.org by Justin Mason <jm...@jmason.org> on 2006/09/04 00:13:46 UTC

Re: Weekly run ...

Theo Van Dinter writes:
> 432243 runs fine, but 432244 causes OOMs.  I poked around some more to
> determine the other keys that need to be deleted, and was going to just
> add them in, but I got to thinking:  Since any plugin can add in data to
> PMS, there can be any number of circular refs that we don't know about, so
> deleting all of the keys is the only way we can be sure to clear them out.
> 
> FWIW: I found resolver and uribl_scanstate which needed to be removed, but
> even then I still got OOMs, it just took longer.  I assume there are other
> net-test-related things that I'm somehow not seeing via Data::Dumper.
> 
> I'm going to commit in a change that changes PMS::finish() to do:
> 
> %{$self} = ();
> 
> which ends up deleting all the keys while not requiring the foreach() method
> that we used previous, so I hope this solves JM's original issue if that being
> inefficient.

Yep, looks fine to me!  Good catch.

> I do think that we still have leaks elsewhere since the process memory
> continues to grow, but it's much lower than before.  I'll keep digging.

Please do...

Last time I looked, there were some tiny leaks over time in the perl
interpreter, but nothing to be worried about (since we restart
every N messages in spamd and mass-check).

--j.

Re: Weekly run ...

Posted by Theo Van Dinter <fe...@apache.org>.
On Sun, Sep 03, 2006 at 11:13:46PM +0100, Justin Mason wrote:
> > I do think that we still have leaks elsewhere since the process memory
> > continues to grow, but it's much lower than before.  I'll keep digging.
> 
> Please do...
> 
> Last time I looked, there were some tiny leaks over time in the perl
> interpreter, but nothing to be worried about (since we restart
> every N messages in spamd and mass-check).

Well, that's not a reason to not be worried about them. :)    Not everyone
restarts their processes, so it's a problem we should deal with if we can.

The more I look at things, the more I believe there's a major leak
related to the URIDNSBL plugin.  Unfortunately, I can no longer figure
out how that code works due to the complexity.  I've spent a good amount
of time looking at it and find that it's too confusing to follow.

In short, if I run just SURBL rules, I OOM.  If I run other network
tests (say, RCVD_IN_XBL,) I don't.  If I don't run net rules at all, I
don't OOM.  Therefore it seems as if the plugin is the issue.  I noticed
that URIDNSBL is the only thing using the AsyncLoop code, so there could
be a problem in there instead/as well.

Justin, since you were the one who put in AsyncLoop, can you poke around and
figure what's causing the issue?

-- 
Randomly Generated Tagline:
"Sorry, not tonight.  I have to floss my cat." - Random Turn-down line