Ajuste de Apache/MySQL/PHP para Wordpress

Ajuste de Apache/MySQL/PHP para Wordpress

Estoy tratando de descubrir por qué mis procesos de Apache están consumiendo tanta memoria.

Mis especificaciones de segmento (1,5 GB de RAM, CentOS 5, Apache2, PHP 5.2, MySQL)

Como puede ver, mis procesos principales consumen casi la mitad de toda mi memoria y cuando se generan más procesos, el servidor casi se detiene, con frecuencia pasa al intercambio y falla.

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND   
6817 apache    40   0  296m 103m 3920 S  0.0  6.7   0:03.52 httpd                         
6789 apache    40   0  295m 101m 3932 S  0.0  6.6   0:07.04 httpd                         
6765 apache    40   0  284m  91m 3948 S 55.1  5.9   0:12.45 httpd                         
6798 apache    40   0  284m  90m 3944 S  0.0  5.9   0:05.49 httpd                         
6542 apache    40   0  283m  90m 3956 S  0.0  5.8   0:43.25 httpd                         
6827 apache    40   0  283m  88m 3796 S  0.0  5.7   0:01.83 httpd    

¿Alguien tiene alguna idea de qué podría estar causando que Apache (y PHP) consuman tanta memoria?

              total       used       free     shared    buffers     cached
Mem:          1545        827        718          0          3        111
-/+ buffers/cache:        713        832
Swap:         3071        103       2968

Respuesta1

Es casi seguro que estás ejecutando mod_php, lo que significa que es casi seguro que estás ejecutando apache en mpm_prefork.

Si el rendimiento en general es bueno hasta que la carga hace que comience a intercambiar, una solución rápida es comenzar a reducir los MaxClients de Apache. Si a Apache se le permite bifurcar procesos de trabajo cuando lo desee, comenzará a intercambiarse bajo carga. Las solicitudes se pondrán en cola hasta que haya un trabajador disponible, por lo que las cosas pueden volverse lentas, pero no tanto como la muerte por intercambio.

Si realmente necesita ajustar las cosas más, considere alejarse del apache mpm previo a la bifurcación. Eso significa ejecutar PHP como FastCGI. Si va a utilizar PHP bajo FastCGI, debería considerar actualizar a PHP 5.3.3, que tiene un administrador de procesos FastCGI mucho mejor (opción de configuración --enable-fpm).

php-fpm/worker es mucho más eficiente en memoria que el antiguo mod_php. Luego puede ajustar la cantidad de procesos/subprocesos de Apache independientemente de la cantidad de procesos PHP. Y sus procesos PHP con mucha memoria solo se utilizan para ofrecer contenido basado en PHP y no se desperdician en servir archivos estáticos.

Respuesta2

PID  USER   PR NI VIRT RES  SHR  S %CPU %MEM TIME+   COMMAND
6817 apache 40 0  296m 103m 3920 S 0.0  6.7  0:03.52 httpd
6789 apache 40 0  295m 101m 3932 S 0.0  6.6  0:07.04 httpd
6765 apache 40 0  284m 91m  3948 S 55.1 5.9  0:12.45 httpd
6798 apache 40 0  284m 90m  3944 S 0.0  5.9  0:05.49 httpd
6542 apache 40 0  283m 90m  3956 S 0.0  5.8  0:43.25 httpd
6827 apache 40 0  283m 88m  3796 S 0.0  5.7  0:01.83 httpd

¿Wordpress es lo único que se ejecuta en Apache? Tengo curiosidad sobre todo por el alto uso de CPU del PID 6765 allí. Me pregunto qué está haciendo. En lo que respecta a los mem%s, parece bastante normal para la configuración de una aplicación web, ya que cada subproceso en realidad ejecuta más de un trabajador.

¿Qué MPM estás usando para Apache y cómo lo configuras?

Además, si publica volcados de terminales, comience cada línea con cuatro espacios. Permite conservar el formato.

Respuesta3

Mi bola de cristal tiene un poco de polvo, pero supongo que la estás usando.memcachedy su extensión PHP. Si ese es el caso, intenta desactivarlo a menos que realmente lo necesites.

Otra posibilidad es que tenga algún tipo de caché de código de operación, comoXcaché, lo instalé y lo configuré para usar mucha memoria.

Puedes intentarlo

pmap -x `pidof apache`

para ver qué está consumiendo la memoria.

Respuesta4

No cargue módulos de Apache no utilizados (como Python, Perl, etc.).

Utilice el módulo php eAccelerator. Es un compilador de php. Puede obtener una ejecución más rápida y un menor uso de memoria.

Quizás otros usuarios también tengan razón.

información relacionada