Apache está utilizando demasiada memoria de mi servidor, lo que hace que se bloquee. Tengo 4 GB de RAM en el servidor.
Estoy tratando de ajustar la configuración de Apache para mejorar su rendimiento, pero soy bastante nuevo en esto.
Estaba tratando de seguir el consejo de este artículo, pero no estoy seguro de cómo calcular las cosas y parece que lo estoy empeorando.
Mi top dice:
11697 apache 15 0 322m 37m 4048 S 0.0 0.9 0:00.52 httpd
13602 apache 15 0 323m 37m 3944 S 0.0 0.9 0:00.50 httpd
11786 apache 15 0 322m 36m 4052 S 0.0 0.9 0:00.50 httpd
12525 apache 15 0 322m 36m 4040 S 0.0 0.9 0:00.63 httpd
11806 apache 15 0 322m 36m 3952 S 0.0 0.9 0:00.42 httpd
11731 apache 15 0 322m 36m 4036 S 0.0 0.9 0:00.46 httpd
11717 apache 16 0 322m 36m 3956 S 0.0 0.9 0:00.54 httpd
11659 apache 15 0 322m 36m 3980 S 0.0 0.9 0:00.49 httpd
Entonces, sería
MaxClients = 3000/ (322-37) = 10
¿Está bien? Además, ¿cuáles deberían ser los valores para los demás parámetros, como MinSpareServers, MaxSpareServers, MaxRequestsPerChild, StartServers, MinSpareThreads, MaxSpareThreads, ThreadsPerChild, MaxRequestsPerChild?
Alguien me ayudaría por favor?
Actualizar
He intentado lo que ustedes han sugerido. Funciona, pero solo por un tiempo. Después de un tiempo después de que se inicia el servidor, el uso de memoria sigue aumentando y nunca disminuye.
Quiero decir, después de iniciar el servidor, supongamos que hay 500 usuarios en línea. El servidor consumirá X RAM. 2 horas después de eso, con los mismos 500 usuarios en línea, el servidor consumirá 10X RAM.
¿Hay alguna forma de evitar esto o tendré que seguir vigilando el servidor y reiniciarlo de vez en cuando?
fuente
Respuestas:
El parámetro principal para ajustar el uso de memoria de Apache será
MaxClients
. Un valor demasiado bajo y se quedará sin espacios disponibles para atender las solicitudes de los clientes. Demasiados y usará toda su RAM y comenzará a usar el espacio de intercambio que matará el rendimiento (puede parecer un bloqueo del servidor).Una forma de ajuste
MaxClients
es observar el uso de memoria del sistema y ajustar la configuración arriba / abajo según sea necesario. Si el servidor comienza a intercambiar, edítelo hacia abajo. Si el servidor tiene memoria libre, póngalo.También puede estimar el valor máximo mirando el uso de memoria de Apache. Inicie
top
y presioneM
para ordenar los procesos por memoria. Deberías ver algo como:Reste las columnas RES y SHR para obtener el uso aproximado de memoria por instancia de Apache. En este caso es de alrededor de 16 MB. Si tengo 4GB de RAM y deseo que se usen 3GB para Apache, la configuración de MaxClients estará alrededor:
Entonces, en este caso, podría comenzar con un valor de 150-200 pero vería el uso de la memoria y si alguna vez comenzara a acercarse al uso de swap, disminuiría los MaxClients 10-20%. También tenga en cuenta que el valor de 3GB es solo un ejemplo aleatorio. En los servidores que solo ejecutan Apache, podría usar casi todos los 4 GB. En otros casos, es posible que solo desee 1 o 2 GB para Apache, salvo el resto para otras aplicaciones, el sistema o la caché.
Editar: responder preguntas adicionales
Generalmente no hay valores mágicos de MaxClients u otros parámetros de configuración de Apache que harán que su servidor de repente sea dos veces más rápido. Parece que algunos servidores funcionan bien si MaxClients es 10 o 1000. Hay dos casos principales en los que la configuración de MaxClients es "incorrecta":
Si bien no conozco los detalles de su servidor, aplicación o tráfico, puedo sugerir los siguientes valores de configuración como punto de partida. Pruébelos, controle la carga y el uso del servidor y cambie la configuración según sea necesario.
fuente