SpamAssassin/Perl eating enormous amounts of memory?

Andrew Moran sneepre at me.com
Tue Mar 3 08:26:38 PST 2009


On Mar 3, 2009, at 8:01 AM, Andrew Moran wrote:

>
> In Mar 3, 2009, at 7:40 AM, Mel wrote:
>
>> On Monday 02 March 2009 16:21:53 Andrew Moran wrote:
>>
>>>> What's even weirder is that the process gets that far. Did you play
>>>> with
>>>> kern.maxdsiz loader tuneable?
>>>> If so, set it lower, so you can at least have the machine in a
>>>> usable state at
>>>> all times. 4G should be enough for any process and should give
>>>> enough time
>>>> for you to spot the leak and get a ktrace.
>>>
>>> Nope, I haven't tweaked any kernel settings, just using the generic
>>> DEFAULT amd64 kernel.   I've been way about tweaking settings  
>>> because
>>> I don't fully understand what the 'correct' values for my setup are.
>>
>> Could you show kenv kern.maxdsiz and if unset limits -H -d? Looks  
>> like it's
>> 32G on my 6.x amd64, in which case setting it is a good idea.
>> echo 'kern.maxdsiz="8G"' >> /boot/loader.conf
>> echo 'kern.defdsiz="4G"' >> /boot/loader.conf
>
>
> Thank you for helping me.     The earlier suggestion of toggling  
> Perl Malloc didn't work, nor did syncing sources and installing new  
> kernel and new world which is what I did lsat night.
>
> As for kernel settings, I don't have anything in my loader.conf,   
> and I'm not entirely sure how to show things that aren't sysctls, as  
> this one doesn't seem to be:
>
> celebrian# sysctl -a | grep kern.maxdsiz
> celebrian# sysctl -a | grep kern.defdsiz
> celebrian#
>

Ok sadly that didn't seem to do much:

celebrian# cat /boot/loader.conf
kern.maxdsiz="8G"
kern.defdsiz="4G"
celebrian#

I rebooted, but still see my memory being chewed up.   Almost  
immediately after booting, one of my spamassassin processes spun out  
of control.  Here's the top with it eating 16 gigs of memory:

   PID    UID    THR PRI NICE   SIZE    RES STATE  C   TIME   WCPU  
COMMAND
  1611   1030      1  68    0 15062M   818M CPU2   2   0:44 20.65%  
perl5.8.9

and from dmesg:

<snip>
swap_pager_getswapspace(16): failed
swap_pager_getswapspace(16): failed
swap_pager_getswapspace(16): failed
swap_pager_getswapspace(16): failed
swap_pager_getswapspace(3): failed
swap_pager_getswapspace(16): failed
pid 1611 (perl5.8.9), uid 1030, was killed: out of swap space


The computer gets pretty unresponsive during this, unless swapoff my  
swap, then the process eats the memory faster and gets killed  
faster.   Did I type in the wrong variables?

--Andy


More information about the freebsd-questions mailing list