On Fri, 7 Sep 2001, Jon Molin wrote:

> Stas Bekman wrote:
> >
> > On Fri, 7 Sep 2001, Jon Molin wrote:
> >
> > > Hi list,
> > >
> > > I have a memory leak in a script or module, the problem is that i've
> > > resently added many scripts and modules and can't easily isolate the
> > > problem. Is there a way besides strace to see what the httpd process is
> > > up to?
> > >  9869 httpd      0   0 21188  19M  2424 S       0 12.2  3.8   0:13 httpd
> > > doesn't help me too much...
> >
> > Please explain what do you mean by 'what the httpd process is up to'?
> >
>
> sorry, what i meant was what script was accessed by the httpd process.
> That's the first problem, locating what set of scripts(modules) it can
> be and after that start looking...

you can use Apache::VMonitor or a trick with SIGUSR2
http://perl.apache.org/guide/debug.html#Using_the_Perl_Trace

> > It's not an easy task to find the offending code that causes memory leaks.
> > Using GTop.pm for easier memory debugging printing helps a lot,
> > Devel::Peek is useful too, try also Devel::Leak and their Apache::
> > friends: Apache::Peek and Apache::Leak. You can find some notes on using
> > these in the mod_perl guide. Apache::VMonitor can be very useful too.
> >
> > Otherwise you will probably have to play the halving game: remove half of
> > your modules/scripts and test. If nothing comes up return a half  of the
> > removed half, and so on. It's not always working like that, since some
> > code may leak when it interacts with some specific code.
> >
> > In the meantime, use Apache::SizeLimit to prevent the processes from
> > growing. See the guide or the manpage for the details.
>
> ok, i'll look into that. I've been using RLimitMEM and RLimitCPU in
> httpd.conf:
> RLimitMEM 15728640      15728640
> RLimitCPU 600   600
> and haven't got them to work very good:
> 10314 httpd     13   0 67824  66M  5572 R       0 17.9 13.1   4:19 httpd
> 10313 httpd     13   0 69984  68M  5580 R       0 17.7 13.5   4:33 httpd

Hmm, that's from Apache core, have never tried using these. Anybody?

try using BSD::Resource/Apache::Resource and Apache::SizeLimit instead.
These work.

But you have to solve the leaking problem anyhow.

> but i guess that's fairly OT on the mod_perl list.

On the opposite, this is very ontopic, since it's very tricky to find a
problem when you have many modules and scripts running in the same
interpreter. So if during the search you come up with some nice technique
we all be very grateful :)

_____________________________________________________________________
Stas Bekman              JAm_pH     --   Just Another mod_perl Hacker
http://stason.org/       mod_perl Guide  http://perl.apache.org/guide
mailto:[EMAIL PROTECTED]   http://apachetoday.com http://eXtropia.com/
http://singlesheaven.com http://perl.apache.org http://perlmonth.com/


Reply via email to