Optimización de PHP para Drupal

Drupal consume bastantes recursos, sobretodo si se utilizan muchos módulos contribuídos. Por eso es muy importante tener la instalación bien optimizada. Tener los parámetros de configuración de PHP bien ajustados es una de las cosas que puede ayudar mucho a mejorar el rendimiento de una web con Drupal, sobretodo si se dispone de memoria en el servidor.

En la sección de requerimientos de la guía de instalación de Drupal se puede encontrar mucha información para mejorar el rendimiento de una instalación de Drupal, pero me quedo con los settings recomendados, algunos más por seguridad que por rendimiento, para que no se me olviden:

safe_mode = off
error_reporting = E_ALL & ~E_NOTICE

cache_limiter = nocache
auto_start = 0
expose_php = off
allow_url_fopen = off
magic_quotes_gpc = off
register_globals = off
display_errors = Off

Sobre la memoria que puede utilizar PHP, depende de la versión de Drupal, y de la memoria disponible en el servidor, y el mínimo va entre 16MB de Drupal 6 y 128 MB de Drupal 8. Para una instalación de producción con tráfico los valores típicos van entre 128MB y 256MB:

memory_limit = 256M

Dos parámetros más (realpath) que pueden ayudar a mejorar mucho la respuesta y el tiempo de carga de los sitios con Drupal, aunque la recomendación es ajustarlos bien, especialmente si el servidor no va sobrado de memoria:

realpath_cache_size= 512k
realpath_cache_ttl = 300

Los parámetros se pueden modificar en el fichero php.ini con la sintaxis indicada, o desde alguna utilidad que proporcione el proveedor de hosting normalmente también con esta misma sintaxis. También se pueden forzar en el fichero .htaccess del directorio raíz de la instalación de Drupal, o en el fichero settings.php de Drupal, en el directorio /sites/default.

En el fichero settings.php la sintaxis sería:

ini_set('display_errors', OFF);
ini_set('memory_limit', '256M');

En el .htaccess, la sintaxis sería así:

php_value display_errors OFF
php_value memory_limit 256M

 

En esta web más consejos para mejorar el rendimiento de Drupal, como el de instalar y utilizar el sistema de cache APC.

Y hablando de rendimiento nunca hay que olvidarse de la base de datos así que enlazo mi post para mejorar el rendimiento de MySQL ajustando parámetros como query_cache_size o query_cache_limit con la ayuda de un script de tunning como mysqltunner.