Apache se inicia con un uso elevado de memoria. ¿Por qué?

Apache se inicia con un uso elevado de memoria. ¿Por qué?

Mi Apache se está iniciando con un uso elevado de memoria de inmediato. Después de reiniciar o reiniciar, veo este tipo de números

 top - 15:37:59 up 22 min,  1 user,  load average: 0.12, 0.09, 0.12
 Tasks: 101 total,   1 running, 100 sleeping,   0 stopped,   0 zombie
 Cpu(s):  0.3%us,  0.3%sy,  0.0%ni, 88.0%id, 11.3%wa,  0.0%hi,  0.0%si,  0.0%st
 Mem:   3076864k total,  1098872k used,  1977992k free,    75348k buffers
 Swap:  2097148k total,        0k used,  2097148k free,   582912k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  1108 mysql     20   0  859m 185m 8136 S  0.0  6.2   0:08.91 mysqld
  1335 root      20   0  581m 109m  18m S  0.0  3.7   0:00.61 apache2
  2064 www-data  20   0  586m 107m  12m S  0.0  3.6   0:00.16 apache2
  2068 www-data  20   0  586m 107m  11m S  0.0  3.6   0:00.09 apache2
  2083 www-data  20   0  586m 106m  11m S  0.0  3.6   0:00.05 apache2
  2085 www-data  20   0  586m 106m  11m S  0.0  3.6   0:00.03 apache2
  2081 www-data  20   0  589m 101m 7368 S  0.0  3.4   0:00.48 apache2
  2086 www-data  20   0  582m  95m 4036 S  0.0  3.2   0:00.00 apache2

Aquí está el resultado de apache2 -V

  Server version: Apache/2.4.12 (Ubuntu)
  Server built:   Feb  4 2015 14:21:10
  Server's Module Magic Number: 20120211:41
  Server loaded:  APR 1.5.1, APR-UTIL 1.5.3
  Compiled using: APR 1.5.1, APR-UTIL 1.5.3
  Architecture:   64-bit
  Server MPM:     prefork
    threaded:     no
      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/apache2"
   -D SUEXEC_BIN="/usr/lib/apache2/suexec"
   -D DEFAULT_PIDLOG="/var/run/apache2.pid"
   -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
   -D DEFAULT_ERRORLOG="logs/error_log"
   -D AP_TYPES_CONFIG_FILE="mime.types"
   -D SERVER_CONFIG_FILE="apache2.conf"

Y finalmente aquí está mi apache2/mods-enabled/mpm_prefork.conf:
Para su información: esta es mi nueva configuración que está actualmente disponible. Configuré la directiva ServerLimit para intentar evitar que genere 100 servidores y bloquee el sistema.

 <IfModule mpm_prefork_module>
 StartServers 2
 MinSpareServers 5
 MaxSpareServers 5
 MaxClients  50
 ServerLimit 30
 MaxRequestsPerChild 200
 #       MaxSpareServers          5
 #       MaxRequestWorkers        150
 #       MaxConnectionsPerChild   0
 </IfModule>

Estoy ejecutando otro servidor usando una configuración similar y mi parte superior muestra esto:

 top - 15:48:32 up 10 days, 14 min,  2 users,  load average: 0.10, 0.06, 0.06
 Tasks: 172 total,   1 running, 171 sleeping,   0 stopped,   0 zombie
 %Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
 KiB Mem:   3078580 total,  2749928 used,   328652 free,   229412 buffers
 KiB Swap:  3141628 total,     1608 used,  3140020 free.  1868332 cached Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
  1286 mysql     20   0 1344940 265440   8340 S   0.0  8.6  56:22.39 mysqld
 21176 www-data  20   0  428168  64900  41772 S   0.0  2.1   0:01.24 apache2
 21020 www-data  20   0  429684  58164  36664 S   0.0  1.9   0:01.93 apache2
 21185 www-data  20   0  425460  52332  31952 S   0.0  1.7   0:00.91 apache2
 21199 www-data  20   0  425884  50604  30144 S   0.0  1.6   0:00.26 apache2
 21130 www-data  20   0  423124  48396  30372 S   0.0  1.6   0:00.52 apache2
 21186 www-data  20   0  422796  48296  30584 S   0.0  1.6   0:00.46 apache2
 21205 www-data  20   0  422992  47608  29740 S   0.0  1.5   0:00.18 apache2
 21204 www-data  20   0  422944  43576  25756 S   0.0  1.4   0:00.12 apache2
 21203 www-data  20   0  424220  28016   8896 S   0.0  0.9   0:00.23 apache2
  6095 root      20   0  414748  24100  14424 S   0.0  0.8   0:14.32 apache2

Eso es después de ejecutar 10 días... Mi sistema fallaba después de un par de días y los registros mostraban que había como 75 procesos de Apache generados, todos con un alto uso de memoria. No estoy seguro de lo que está pasando. Instalé mod_pagespeed alrededor del 17 de febrero... funcionó bien hasta alrededor del 25 de febrero. Desde el 25 de febrero he notado todo tipo de problemas.

Ejecutando Ubuntu 12.04 LTS.

Se agradecería cualquier paso siguiente para resolver este problema.

Respuesta1

"usando una configuración similar"

Humildemente sugiero que esta es una configuración muy diferente. El primer paso en el ajuste es eliminar todo lo que no necesita (en el caso de Apache, los módulos compartidos). Lo siguiente a tener en cuenta es que RSS y VSZ no son buenos indicadores de la huella de memoria de ningún proceso en Linux, y ciertamente no son un proceso bifurcado. Para saber cuánta memoria utilizan realmente sus procesos de Apache, realice un seguimiento de la salida de 'free' y ps -ef | grep apache2 | WC

Una vez que haya recopilado algunos datos, puede hacer una regresión lineal para calcular cuál debería ser el límite del servidor.

Establecer minspareserver con el mismo valor que maxspareservers no es una buena idea.

Había instalado mod_pagespeed

mod_pagespeed consume mucha memoria y CPU, y deberíanuncautilizarse sin un proxy inverso delante de él.

información relacionada