Tengo un cuadro de Apache ejecutando un sitio web de WordPress.
Por alguna razón, parece que algunos subprocesos de Apache están usando la mayor parte de la CPU (10%+) y el resto poco (0,1~).
La caja es una CPU dual,CPU Intel(R) Xeon(R) E5620 a 2,40 GHz (cada CPU tiene 4 núcleos y 8 subprocesos).
¿Cuál es la razón por la que los subprocesos se muestran así? ¿No deberían tener la misma CPU por usuario?
¿Existe algún conjunto de optimizaciones de Apache para ayudar a reducir la carga (CentOS, instalación base de Apache2 con PHP y MySQL)?
Las configuraciones de MPM de prefork y trabajador son las predeterminadas a continuación
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
Respuesta1
Por alguna razón, parece que algunos subprocesos de Apache están usando la mayor parte de la CPU (10%+) y el resto poco (0,1~).
A lo que debes prestar más atención aquí es a tu actividad real. En la instantánea que proporcionó, la cantidad de tareas en ejecución es 7, con una carga de 4.
Entonces, en este momento, la cantidad de personas que necesitaban servicio era 7 (probablemente, aunque solo puedo ver 6 atribuidas a httpd). El resto son procesos dormidos que no se despertarán a menos que ocurra algún evento.
La razón por la que tiene un alto porcentaje de CPU en algunos procesos y menor en otros es porque solo muchos de ellos tienen algo que hacer dentro del segundo período determinado medido en top
.
¿Existe algún conjunto de optimizaciones de Apache para ayudar a reducir la carga?
Bueno, su carga probablemente oscila entre 3 y 4 porque la mitad de los procesos en ejecución que tiene probablemente no se completen en 5 segundos (la carga se mide internamente cada cinco segundos).
Hay demasiados procesos de Apache activos allí. ¿Cuáles son sus configuraciones previas a la bifurcación? Intente configurarlo en algo más factible. Un máximo de 72 podría ser un comienzo razonable y un ajuste a partir de ahí. Incluso si pudiera atender a todos con esa cantidad de procesos, hará que todos los procesos se ralenticen en igual proporción y la carga aumente de acuerdo con la cantidad de personas atendidas. Es mejor servir lo que se puede rápidamente y rechazar lo que no se puede servir que servir a todos muy lentamente.
Tengo la sensación de que algunas partes de su página de WordPress son computacionalmente costosas. Intente almacenar en caché parte de este contenido más caro.