httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Frank <thu...@apache.org>
Subject Re: [users@httpd] MPM Modules Rule of Thumb
Date Sun, 10 Sep 2017 23:26:01 GMT


On 06/09/17 10:23 PM, Tony DiLoreto wrote:
> A quick update here, I'm starting to believe there is a memory leak in
> either the way I've configured or compiled httpd on AWS EC2. I'm running
> a t2.small with 4GB memory with LAMP installed and 4 very small (< 5
> hits a day) sites running on it. In my opinion, even with mod_php,
> Apache should require no more than 100MB IN TOTAL. That's not, however,
> the case:
>
> [ec2-user@ip-172-31-21-23 ~]$ free -m
>              total       used       free     shared    buffers     cached
> Mem:          3954       *3809*        145         19        214        643
> -/+ buffers/cache:       2952       1002
> Swap:            0          0          0
>
> [ec2-user@ip-172-31-21-23 ~]$ ps aux | grep 'httpd' | awk '{print $6/1024;}'
> 2.07812
> 45.9297
> 9.48438
> 2648.25
> [ec2-user@ip-172-31-21-23 ~]$ ps aux | grep 'httpd' | awk '{print
> $6/1024;}' | awk '{avg += ($1 - avg) / NR;} END {print "Num Processes: "
> NR " Average: " avg " MB";}'
> Num Processes: 4 Average: 676.416 MB
>
> There you have it. A *4GB, $50/mo EC2 server* with the default
> installation of LAMP
> <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html>,
> at *96% utilized memory* and *71%* of the used memory going to 4 Apache
> processes (average of 676.4MB per process). If you're wondering how it
> is installed:
>
> [ec2-user@ip-172-31-21-23 ~]$ httpd -V
> Server version: Apache/2.4.27 (Amazon)
> Server built:   Aug  2 2017 18:02:45
> Server's Module Magic Number: 20120211:68
> Server loaded:  APR 1.5.1, APR-UTIL 1.4.1
> Compiled using: APR 1.5.1, APR-UTIL 1.4.1
> Architecture:   64-bit
> Server MPM:     worker
>   threaded:     yes (fixed thread count)
>     forked:     yes (variable process count)
> Server compiled with....
>  -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=256
>  -D HTTPD_ROOT="/etc/httpd"
>  -D SUEXEC_BIN="/usr/sbin/suexec"
>  -D DEFAULT_PIDLOG="/var/run/httpd/httpd.pid"
>  -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
>  -D DEFAULT_ERRORLOG="logs/error_log"
>  -D AP_TYPES_CONFIG_FILE="conf/mime.types"
>  -D SERVER_CONFIG_FILE="conf/httpd.conf"
>
> and the loaded modules:
>
> [ec2-user@ip-172-31-21-23 ~]$ httpd -M
> Loaded Modules:
>  core_module (static)
>  so_module (static)
>  http_module (static)
>  access_compat_module (shared)
>  actions_module (shared)
>  alias_module (shared)
>  auth_basic_module (shared)
>  auth_digest_module (shared)
>  authz_core_module (shared)
>  authz_dbd_module (shared)
>  authz_dbm_module (shared)
>  authz_groupfile_module (shared)
>  authz_host_module (shared)
>  authz_owner_module (shared)
>  authz_user_module (shared)
>  autoindex_module (shared)
>  data_module (shared)
>  deflate_module (shared)
>  dir_module (shared)
>  env_module (shared)
>  expires_module (shared)
>  ext_filter_module (shared)
>  filter_module (shared)
>  headers_module (shared)
>  include_module (shared)
>  info_module (shared)
>  log_config_module (shared)
>  mime_module (shared)
>  negotiation_module (shared)
>  reqtimeout_module (shared)
>  request_module (shared)
>  rewrite_module (shared)
>  setenvif_module (shared)
>  slotmem_plain_module (shared)
>  slotmem_shm_module (shared)
>  socache_dbm_module (shared)
>  socache_memcache_module (shared)
>  socache_shmcb_module (shared)
>  status_module (shared)
>  unixd_module (shared)
>  userdir_module (shared)
>  version_module (shared)
>  vhost_alias_module (shared)
>  watchdog_module (shared)
>  dav_module (shared)
>  dav_fs_module (shared)
>  dav_lock_module (shared)
>  mpm_worker_module (shared)
>  ssl_module (shared)
>  cgid_module (shared)
>  php5_module (shared)
>  pagespeed_module (shared)
>
>
>
> Thoughts on optimization/memory repair?
>
> Thank you!
>
>
>
>
>
>
> On Wed, Sep 6, 2017 at 2:25 PM, Tony DiLoreto
> <tony@miglioretechnologies.com <mailto:tony@miglioretechnologies.com>>
> wrote:
>
>     Thanks Luca, I'll give that a shot. What surprises me is how much
>     each process was consuming; at times 250mb each. Are you saying the
>     majority of that is for php?
>
>     At the end of the day, I'm looking for the optimal configuation for
>     a standard Wordpress site server. Given the ubiquity of the platform
>     you'd expect more  people to have blogged about the required mods
>     and MPM settings for this, but I've come back with little.
>
>     Do we have a "barebones Wordpress" list of mods that are required?
>
>     On Wed, Sep 6, 2017 at 1:30 AM Luca Toscano <toscano.luca@gmail.com
>     <mailto:toscano.luca@gmail.com>> wrote:
>
>         Hi Tony,
>
>         usually httpd consumes a very little amount of memory, if it is
>         behaving in that way it is probably due to some module like
>         mod_php. Can you give us a bit more info about your mpm used and
>         the list of modules loaded? For example, the most common use
>         case that we see is mpm-prefork and mod_php causing a ton of RAM
>         consumed (each httpd process allocates memory for a PHP
>         interpreter), meanwhile a solution like mpm-worker|event +
>         mod_proxy_fcgi + php-fpm works way better.
>
>         My suggestion would be to narrow down what module is really
>         causing your memory to saturate before tuning the mpm.
>
>         Luca
>
>
>         2017-09-06 1:33 GMT+02:00 Tony DiLoreto
>         <tony@miglioretechnologies.com
>         <mailto:tony@miglioretechnologies.com>>:
>
>             Hi Luca,
>
>             Basically my server runs out of free memory and freezes. On
>             AWS I have to stop/start it again to be able to SSH in. What
>             I'd really like is a MAX_PERCENTAGE_AVAILABLE_MEMORY
>             directive that limits Apache to <= some % of free memory.
>             That way it can never halt my system.
>
>             Hope this helps.
>
>             On Tue, Sep 5, 2017 at 1:16 PM Luca Toscano
>             <toscano.luca@gmail.com <mailto:toscano.luca@gmail.com>> wrote:
>
>                 Hi Tony,
>
>                 2017-08-31 23:43 GMT+02:00 Tony DiLoreto
>                 <tony@miglioretechnologies.com
>                 <mailto:tony@miglioretechnologies.com>>:
>
>                     Hi All,
>
>                     I've been scouring the internet for best practices
>                     or heuristics for specifying parameter values of the
>                     MPM directives. My server seems to lock up
>                     regardless of the values I enter. Are there "rules
>                     of thumb" for each MPM type (prefork, worker, event)?
>
>
>                 Can you tell us what do you mean with "lock up"?
>
>                 Luca
>
>             --
>             Tony DiLoreto
>             President & CEO
>             Migliore Technologies Inc
>
>             716.997.2396
>             tony@miglioretechnologies.com
>             <mailto:tony@miglioretechnologies.com>
>
>
>
>             miglioretechnologies.com <http://miglioretechnologies.com/>
>             /*The best in the business...period!*/
>
>
>     --
>     Tony DiLoreto
>     President & CEO
>     Migliore Technologies Inc
>
>     716.997.2396
>     tony@miglioretechnologies.com <mailto:tony@miglioretechnologies.com>
>
>
>
>     miglioretechnologies.com <http://miglioretechnologies.com/>
>     /*The best in the business...period!*/
>
>
>
>
> --
> Tony DiLoreto
> President & CEO
> Migliore Technologies Inc
>
> 716.997.2396
> tony@miglioretechnologies.com <mailto:tony@miglioretechnologies.com>
>
>
>
> miglioretechnologies.com <http://miglioretechnologies.com/>
> /*The best in the business...period!*/

Tony,

Using worker and mod_php is a bad idea, unless you recompiled php to be 
thread-safe.

Using mod_php without that would result in segfaults with threaded mpm 
modules like event and worker.

Either way, I would strongly advise you to avoid using mod_php, unless 
you know exactly what you're doing.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


Mime
View raw message