De http://httpd.apache.org/docs/2.2/misc/perf-tuning.html
El mayor problema de hardware que afecta el rendimiento del servidor web es la RAM. Un servidor web nunca debería tener que intercambiar, ya que el intercambio aumenta la latencia de cada solicitud más allá de un punto que los usuarios consideran "lo suficientemente rápido". Esto hace que los usuarios presionen detener y recargar, aumentando aún más la carga. Puede y debe controlar la configuración de MaxClients para que su servidor no genere tantos hijos que comience a intercambiarse. Este procedimiento para hacer esto es simple: determine el tamaño de su proceso Apache promedio, mirando su lista de procesos a través de una herramienta como top, y divídalo en su memoria total disponible, dejando espacio para otros procesos.
El problema principal es que no puedo entender cómo saber el tamaño, porque, bueno, tengo el tamaño de httpd en no más de 3888
Pero, si necesitamos determinar el número de MaxClients, y tengo 4GB de RAM, entonces obtengo: 972, ¿entonces debería usar como 900 en los MaxClients?
fuente
Respuestas:
Primero, determine el PID de uno de sus procesos de Apache.
Entonces puedes hacer algo como esto:
cat /proc/PIDHERE/status | grep VmRSS
Esto producirá el tamaño de conjunto residente (actual) de ese proceso en particular, similar a:
VmRSS: 304456 kB
Este valor es como suena, es el tamaño del proceso residente en la RAM.
Luego normalice su unidad de medida (
4GB * 1024 * 1024 = 4,194,304 KB
). Dividir:4194304 KB / 304456 KB = 13.77 processes
Tenga en cuenta que es probable que tenga otros procesos ejecutándose en su sistema que también consuman memoria, e idealmente desea minimizar el intercambio, por lo tanto, es probable que no desee configurar 13 Clientes Apache Max (usando mis números), desea una cantidad menor (a su discreción )
Esta es una estimación cruda; El tamaño de sus procesos de Apache puede crecer con el tiempo dependiendo de la carga.
fuente
Predecir los maxClients a partir de escenarios de prueba es un punto de partida, pero para resolver el problema correctamente, debe comenzar a medir cómo se comporta su aplicación con el tráfico real.
Suponiendo que su apache se esté ejecutando antes de la bifurcación ...
Configure un trabajo cron para contar el número de procesos httpd y la salida de 'libre'. Tenga en cuenta que si su servidor web está sirviendo contenido de archivos locales (y en muchos casos, incluso cuando no lo está), la cantidad de memoria disponible para caché / búferes tendrá un gran impacto en el rendimiento. es decir, si llega al punto de cambiar, ¡su rendimiento web probablemente sea horrible!
Una vez que tenga algunos datos, grábelos en un gráfico y haga una regresión de mínimos cuadrados en él, extrapole para encontrar el número de clientes en los que alcanza su límite objetivo para el uso de memoria httpd. Un punto de partida para el objetivo de memoria sería la menor cantidad del 80% de la memoria física / 80% del tamaño del contenido.
(tenga en cuenta que si tiene MinSpareServers configurado en un valor muy alto, los resultados pueden no ser precisos)
En un mundo ideal, también medirías el tiempo de respuesta de la URL en el mismo archivo de registro, pero eso se está volviendo mucho más complejo.
fuente