Currently, the apache processes take (each) about 150 MB memory,
what's quite a lot. Now, i've been wondering which module and why it
takes that much memory at all.

Georg,

How do you determine how much memory each Apache process is taking? If
you're on Linux, it's tricky to correctly determine the shared memory
size.

Initially, the apache processes take 42 MB each (i think this should
be mostly shared memory and a lot of preloaded projects, as usual on a
developer machine). If i connect using SOAP, the process jumps up to
140-150MB, and i just can't think of why this occurs.

That sounds to me like you're using Apache::DBI, which connects to the
database on the first request. It loads the database driver (i.e.,
DBD::Oracle) into the shared memory at that time. Here's how I check
how much memory is actually being used by Apache (assuming you're
using 1.3.x or 2.x prefork):

*) Stop Apache
*) Change the value of StartServers parameter in http.conf to be equal
to MaxClients (say it's 'N')
*) Do `free -m` and note how much free memory you have (minus buffers/cache)
*) Start Apache, but make no requests yet
*) Do `free -m` again, and look how the free memory usage has changed.
This should decrease the free memory by the amount used by Apache
parent process (shared memory) and N Apache children
*) Use your favorite load testing software to send at least N
concurrent requests to your server, and monitor how your free memory
is decreasing. If you see that after the first request the amount of
free memory is decreased by N * 100MB, then you have a problem.
Otherwise, those additional 100MB are shared and you have nothing to
worry about.

--
-----------------------------------------------------
Evaldas Imbrasas
http://www.imbrasas.com

Reply via email to