How to get the most bang for the buck

¿Cómo acelerar la ejecución de PHP? ¿Cómo ser capaz de servir más páginas por segundo? Este es uno de los retos a los que se enfrenta continuamente un administrador de sistemas en un entorno web con páginas dinámicas. Intentamos exprimir al máximo la infraestructura actual para no tener que desembolsar más dinero comprando nuevos servidores o utilizar más espacio en el CPD.

Desde hace años se vienen utilizando sistemas de caché en servidores web para ahorrar ciclos de CPU en la ejecución de PHP. Estos sistemas de caché funcionan precompilando el código y manteniéndolo pre-compilado en memoria, teniendo que compilar de nuevo el fichero PHP solamente si este cambia, algo que se averigua utilizando llamadas stat(), o bajo demanda, invalidando el objeto manualmente. El utilizar un acelerador de PHP puede hacer que tu servidor web sirva entre dos y cuatro veces más peticiones que sin él. Hay aceleradores de PHP para todos los gustos, cada uno con sus pros y sus contras. No obstante, no todos cubren las mismas necesidades, además de unos estar más maduros que otros. Yo personalmente, por la fase de desarrollo en la que se encuentra, prefiero APC, que además será incluido en el core de PHP6, lo que lo convertirá en el sistema de caché oficial para este lenguaje. Por otro lado, APC permite almacenar información en su memoria compartida, no solamente cachear los ficheros, por lo que si tienes determinada información que no cambia nunca y debe estar cacheada, es un buen sistema, además de fiable.

Lo bonito de APC es que lo instalas y empiezas a ver resultados, ya que seguramente el módulo esté habilitado por defecto, pero aún así tendrás que tunearlo un poco para sacarle toda la chicha que te puede ofrecer. No voy a entrar en esos detalles, pero la principal opción de configuración de PHP es la cantidad de memoria compartida donde almacenará los ficheros precompilados.

apc.shm_size = 32

Esta memoria es la que reserva el padre de PHP, no sus hijos, por lo que quizá te interese funcionar con una configuración compuesta por menos padres y más hijos para minimizar el uso de memoria en el servidor. Cuando la memoria reservada de APC comienza a alcanzar el 95% el segmento de memoria mostrará fragmentación, y dado que estamos alcanzando el límite de la memoria reservada podemos comenzar a tener errores 500 tras actualizar el código del servidor web, o en periodos de actividad intensa del sitio, por ejemplo. El paquete ofrece un fichero llamado apc.php que nos ofrece información avanzada del estado de APC. Es imprescindible echarle un vistazo para tener una visión general del estado de APC y no estar absolutamente ciego.

2 Responses to “How to get the most bang for the buck”


  1. 1 alidhaey 27 julio 2009 a las 09:06

    A mi tambien, APC era el que más me gustaba. El rendimiento en su momento era similar al del antiguo Eaccelerator y estaba mejor mantenido, con el añadido de que uno de sus responsables era uno de los desarrolladores importantes de PHP (si me memoria no me falla).

    De estoy hablando de hace 3 ó 4 años, fueron locos tiempos de pruebas.

    Un saludo.


  1. 1 How to get the most bang for the buck (II) « Ricardo Bartolomé Trackback en 3 agosto 2009 a las 06:02
Comments are currently closed.



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: