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.