You should be able to get list of modules actually being load by using the -M command to Apache. Thus:
apache2 -M Now. I am going to go through things to try as a series of emails over time as don't have state of mind now to try and do it all at once. First up. If not using PHP then disable mod_php. Second, now that you have got rid of mod_php, switch Apache installation from prefork MPM to worker MPM. Third, since you are using mod_wsgi daemon mode, ensure that mod_wsgi doesn't unnecessarily enable Python interpreters in Apache child processes. For that read: http://blog.dscpl.com.au/2009/11/save-on-memory-with-modwsgi-30.html Changing from prefork to worker MPM and ensuring the Python interpreters aren't initialised when not needed, will cut down on memory footprint in the Apache child processes which do the proxying to mod_wsgi daemon mode processes. This is because instead of potentially up to 150 processes under excessive load, you would at most have 6 processes. You have so few now because each of those 6 can handle 25 concurrent requests in worker MPM where as prefork needed a separate process for each request. To try and gauge progress on this before you start, change: WSGIDaemonProcess site-1 user=my-user group=www-data threads=25 to: WSGIDaemonProcess site-1 user=my-user group=www-data threads=25 display-name=%{GROUP} When you do a 'ps' now, the mod_wsgi daemon processes will be named '(wsgi:site-1)' and can be distinguished easily from Apache root and child process. Use 'ps' to look at number of processes and sizes before making the other changes above. For example, on my Mac OS X box with prefork I see: $ ps auxwwww | egrep 'httpd|USER' | grep -v grep USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND _www 58942 0.0 0.1 2440732 2184 ?? S 7:31am 0:08.82 /usr/sbin/httpd -D FOREGROUND _www 58941 0.0 0.1 2440732 2184 ?? S 7:31am 0:08.83 /usr/sbin/httpd -D FOREGROUND _www 58940 0.0 0.1 2440732 2196 ?? S 7:31am 0:08.79 /usr/sbin/httpd -D FOREGROUND _www 58937 0.0 0.1 2440732 2184 ?? S 7:30am 0:08.82 /usr/sbin/httpd -D FOREGROUND root 58908 0.0 0.0 2439768 1208 ?? Ss 7:30am 0:01.97 /usr/sbin/httpd -D FOREGROUND _www 61069 0.0 0.1 2440732 2232 ?? S 11:22am 0:05.44 /usr/sbin/httpd -D FOREGROUND _www 60310 0.0 0.1 2440732 2184 ?? S 9:47am 0:06.62 /usr/sbin/httpd -D FOREGROUND You would grep for 'apache2' and not 'httpd'. The 'root' owned process is the Apache parent process and the rest are the Apache child processes proxying to the mod_wsgi daemon processes and which would also be handling static file handling if Apache being used for that. Remember to check this when traffic flowing and now just when idle as Apache will dynamically create more and more processes to meet demand. You can read a bit about that at: http://blog.dscpl.com.au/2009/03/load-spikes-and-excessive-memory-usage.html So, disable PHP, switch to worker MPM and disable interpreter initialisation in embedded mode and restrict code execution in embedded mode just to catch and configuration stuff ups. Then capture 'ps' output and post both so can compare. BTW, out of the modules you are loading into Apache, if you can say which you think you are using. I note for example that rpaf is being loaded. Are you actually using that? After we look at results for changes above, then we can look at what is the minimum set of Apache modules you need and strip those back. Graham On 13 August 2011 05:21, Paul Walsh <[email protected]> wrote: > Oh, ok, to check MPM on Ubuntu was as simple as apache2 -V. > That shows me: > Server MPM: Prefork > threaded: no > forked: yes (variable process count) > Server compiled with.... > -D APACHE_MPM_DIR="server/mpm/prefork" > -D APR_HAS_SENDFILE > -D APR_HAS_MMAP > -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) > -D APR_USE_SYSVSEM_SERIALIZE > -D APR_USE_PTHREAD_SERIALIZE > -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT > -D APR_HAS_OTHER_CHILD > -D AP_HAVE_RELIABLE_PIPED_LOGS > -D DYNAMIC_MODULE_LIMIT=128 > -D HTTPD_ROOT="/etc/apache2" > -D SUEXEC_BIN="/usr/lib/apache2/suexec" > -D DEFAULT_PIDLOG="/var/run/apache2.pid" > -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" > -D DEFAULT_LOCKFILE="/var/run/apache2/accept.lock" > -D DEFAULT_ERRORLOG="logs/error_log" > -D AP_TYPES_CONFIG_FILE="mime.types" > -D SERVER_CONFIG_FILE="apache2.conf" > > -- > You received this message because you are subscribed to the Google Groups > "modwsgi" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/modwsgi/-/_jUgBgryjacJ. > 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/modwsgi?hl=en. > -- You received this message because you are subscribed to the Google Groups "modwsgi" 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/modwsgi?hl=en.
