How to get the most bang for the buck (II)

La semana pasada hablábamos de aceleradores de PHP, algo que nos permitiría servir más peticiones por segundo con nuestros servidores web. Hoy hablaré de un parche llamado FatMM que aplicaremos a nuestras fuentes de PHP y que nos permitirá arañarle un poco de CPU a nuestros frontales.

Este parche cambia el comportamiento del gestor de memoria de PHP a la hora de reservar memoria, que en vez de reservar/liberar memoria al vuelo, reserva una determinada memoria a la hora de crear el hijo de PHP y aumenta esta cantidad de memoria si lo necesita. Al final esto permite ahorrar ciclos de CPU gracias a que ahora no tiene que hacer miles de alloc()s, dejando la CPU libre para hacer algo útil. Este ahorro de CPU se traduce en un mayor uso de memoria. Este parche es útil si sirves una página en PHP compleja, y no si sirves contenido estático o sencillos scripts en PHP. Este parche no nos ofrecerá tanto ahorro como APC, pero todo lo que sea arañar uso de CPU es bienvenido, ¿no?

Por defecto el tamaño de memoria reservado es de 64MB, que quizá sea un poco elevado. En la web del autor disponemos de un parche que modifica las fuentes de Apache para poder configurar el servidor web con la constante ZEND_FATMM al valor que deseemos. Lighttpd permite hacer esto a través de la opción bin-environment. ¿Cuál es el valor adecuado para nuestro servidor web? Te toca probar, y ver gráficas de CPU de tus frontales, pero hay que tener en cuenta que la memoria reservada, al contrario de la de APC, es independiente para cada hijo de PHP, por lo que si tienes reservado un segmento de memoria de 50MB y tienes 100 hijos de PHP, necesitarás 5GB de memoria fijos. Hay que añadir a esto la memoria reservada por APC, y la memoria máxima de cada proceso de PHP multiplicado por su número de hijos, teniendo en cuenta que quizá nos podamos permitir el lujo de hacer un poco de sobresuscripción de la memoria del sistema, basándonos en que es bastante improbable que tengas todos los hijos utilizados al mismo tiempo, consumiendo el máximo de memoria permitida a cada hijo de PHP, con el añadido de la memoria reservada por FatMM y APC.

Al fin y al cabo, es echar cuentas. Espero que os sea útil.

Anuncios

Las opiniones reflejadas en este blog son personales o ni siquiera son opiniones, y bajo ningún concepto representan las estrategias, opiniones o posturas de mi empresa actual, ni de ninguna en las que he trabajado, así como tampoco de ninguno de los clientes o proveedores de todas ellas.
La información se proporciona como está, sin garantías de ninguna clase, y no otorga ningún derecho. Los comentarios pertenecen a sus autores y bajo ningún concepto el autor del blog se hará responsable de los mismos.

Categorías

Archivos


A %d blogueros les gusta esto: