PID PPID RSS COMMAND
17122 1 21504 /home/---/webapps/django/apache2/bin/httpd -f /
home/---/webapps/django/apache2/conf/httpd.conf
14180 14154 1808 sshd: [EMAIL PROTECTED]/2
14181 14180 1464 -bash
14892 17122 20496 /home/---/webapps/django/apache2/bin/httpd -f /
home/---/webapps/django/apache2/conf/httpd.conf
14893 17122 20496 /home/---/webapps/django/apache2/bin/httpd -f /
home/---/webapps/django/apache2/conf/httpd.conf
15175 14181 940 /bin/sh /home/---/scripts/mem-usage
15176 15175 764 ps -u --- -o pid,ppid,rss,command
15177 15175 708 awk {print $0}{sum+=$2} END {print "Total", sum/1024,
"MB"}
Total 66.58 MB
So it appears the first apache2 process is the parent. I'm going to
guess from your comments that 21MB is perhaps a bit much for the
parent apache process.
As for what's being loaded: mod_python, mod_log_config, mod_dir,
mod_mime, mod_rewrite, mod_env. Most of those look fairly important,
though I haven't done any research into it. Obviously mod_python is
needed at the very least.
Stopping and restarting apache does work as promised, as all my apache
processes are back to ~3MB each (15MB total). After a couple of hits
usage goes up to about 35MB. So I guess it could still be a memory
leak, though I've run ab a couple of times (1000 requests, 100
concurrency) and the memory footprint never seems to increase very
much.
On May 29, 10:29 pm, Graham Dumpleton <[EMAIL PROTECTED]>
wrote:
> What is important to understand with Apache is that there is a parent
> process, which effectively acts as a supervisor process, and the child
> processes which actually accept and handle requests. When one uses
> 'restart' with the traditional 'apachectl' management command, it only
> kills off and restarts the child processes and does not stop the
> parent process. Because the child processes are a fork of the parent
> process, if for some reason there was a memory leak in the parent
> process, that leak would be inherited by the child process on a
> 'restart'. To fully kill off the parent and the children, you would do
> a 'stop' followed by a 'start' if using 'apachectl'. As to what the
> Webfaction script does I can only speculate.
>
> What you need to thus do is get 'ps' to also output the 'PPID' value
> using 'l' flag so you can work out which is the parent 'httpd'
> process. For example:
>
> $ ps axlwww | egrep '(PPID|httpd)'
>
> UID PID PPID CPU PRI NI VSZ RSS WCHAN STAT TT
> TIME COMMAND
> 0 429 1 0 31 0 31364 2004 - Ss ??
> 0:00.11 /usr/local/apache-2.2.4/bin/httpd -k start
> 70 430 429 0 31 0 30524 592 - S ??
> 0:00.00 /usr/local/apache-2.2.4/bin/httpd -k start
> 501 431 429 0 31 0 31136 852 - S ??
> 0:00.01 /usr/local/apache-2.2.4/bin/httpd -k start
> 501 432 429 0 31 0 31136 848 - S ??
> 0:00.01 /usr/local/apache-2.2.4/bin/httpd -k start
> 70 433 429 0 31 0 45296 1172 - S ??
> 0:00.01 /usr/local/apache-2.2.4/bin/httpd -k start
> 70 434 429 0 31 0 45296 1176 - S ??
> 0:00.01 /usr/local/apache-2.2.4/bin/httpd -k start
>
> The parent process here is 429. Normally this process should only use
> quite small amounts of private memory. I have never seen an instance
> of where the parent process ballooned out in size, but if you have a
> dodgy Apache module it feasibly might. For example, from 'top':
>
> PID COMMAND %CPU TIME #TH #PRTS #MREGS RPRVT RSHRD RSIZE
> VSIZE
> 434 httpd 0.0% 0:00.01 27 55 93 496K 2.73M 1.15M
> 44.2M
> 433 httpd 0.0% 0:00.01 27 55 93 496K 2.73M 1.14M
> 44.2M
> 432 httpd 0.0% 0:00.00 1 10 37 204K 2.50M 848K
> 30.4M
> 431 httpd 0.0% 0:00.00 1 10 37 208K 2.50M 852K
> 30.4M
> 430 httpd 0.0% 0:00.00 1 10 33 188K 2.02M 592K
> 29.8M
> 429 httpd 0.0% 0:00.11 1 11 38 60K 2.73M 1.96M
> 30.6M
>
> Ie., 60Kbytes here only, versus 200-500Kbytes for children.
>
> Anyway, work out whether how you are restarting Apache is killing of
> the parent process. If not work out how to restart Apache so it is.
> Also look at how much memory the parent is using and see if it is
> small.
>
> This at least is some sanity checks you can do.
>
> BTW, what Apache modules are actually being loaded using LoadModule
> directive.
>
> Graham
>
> On May 30, 11:42 am, chrominance <[EMAIL PROTECTED]> wrote:
>
> > I've restarted apache several times, using the restart command in the
> > webapps/django directory provided by Webfaction. Perhaps there's a
> > more absolute restart command I don't know about, but I'm pretty sure
> > that's the one--whenever I use it, memory usage seems to go down.
>
> > Also, I'm not sure if this is relevant, but whenever I do restart the
> > apache processes, memory usage doesn't reset to the same baseline
> > level--for example, the site ran just fine with about 30-40MB of RAM
> > over the weekend, but restarting apache now only gets us down to about
> > 65MB. And upon my last check the apache processes peaked at about
> > 85MB. If there's a memory leak in my application, it wouldn't still
> > leak after I've restarted apache, would it?
>
> > I'll try the Webfaction forum too. Thanks, and keep the advice coming!
>
> > On May 29, 8:15 pm, "Jay Parlar" <[EMAIL PROTECTED]> wrote:
>
> > > On 5/29/07, chrominance <[EMAIL PROTECTED]> wrote:
>
> > > > I've recently put up a newspaper site on Webfaction that was developed
> > > > without much concern for memory limits--coming from PHP, my knowledge
> > > > of memory issues is practically nil. Of course, Webfaction's plans all
> > > > have memory limits, and we're currently on Shared 1, which imposes a
> > > > 40MB limit. We're running the standard apache2/mod_pythonconfig, with
> > > > media served via a separate apache2 process as Webfaction and the
> > > > Django site recommends. The Debug setting has been set to False. I
> > > > believe those are the standard steps recommended for reducing resource
> > > > usage.
>
> > > Did you remember to restart Apache after setting Debug to False? I
> > > have a site running on Shared1, and the memory usage was close to what
> > > you have, until I set Debug to False and restarted.
>
> > > Also, you might want to ping the Webfaction Django forum
> > > (http://forum.webfaction.com/viewforum.php?id=19) as they're pretty
> > > good about responding, and one of the admins might check if something
> > > is wrong with your config.
>
> > > And I *believe* the "3 small sites" comes from the fact that on
> > > Shared1, a max of 3 Apache processes will run, so you can run a site
> > > on each process. I might be completely wrong on that though.
>
> > > Jay P
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---