Posts Tagged ‘memcached’

Instalación y configuración de memcached en MediaWiki

Monday, June 30th, 2008

A continuación presento como instalé y configuré memcached en MediaWiki, sobre un Ubuntu 7.04.

¿Qué es memcached?

Memcached es un sistema de cache, que almacena objetos en memoria. Estos objetos son las consultas que se van realizando a la base de datos. La cache que utiliza es una tabla hash, que puede ser distribuida entre varias máquinas.

Beneficios del uso de memcached

Aumento en el rendimiento y disminución en la carga de la base de datos. Al estar cacheada las consultas, se puede “armar” más rápido las páginas que se sirven a los usuarios. Además se reduce considerablemente los accesos a la base de datos.

Requerimientos

  • PHP debe estar compilado con la –enable-sockets
  • libevent1
  • memcached

Para verificar que tenemos PHP compilado con esa opción podemos verificarlo con phpinfo (creando un página PHP con <?phpinfo();?>). En la figura podemos ver que tenemos compilado PHP con esa opción.

Socket habilitado en phpinfo

Para satisfacer los otros dos requerimientos, basta ejecutar un aptitude install memcached libevent1.

Verificación de funcionamiento

Podemos ver si está funcionando, verficando si efectivamente memcached está escuchando en su puerto.


$ netstat -tap
Conexiones activas de Internet (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 *:53856                 *:*                     LISTEN     5409/rpc.statd
tcp        0      0 localhost:2208          *:*                     LISTEN     4983/hpiod
tcp        0      0 *:nfs                   *:*                     LISTEN     -
tcp        0      0 *:11211                 *:*                     LISTEN     2
9248/memcached

Esta verificación es redundante ya que las dependencias de memcached son resueltas por aptitude, pero útil si han compilado memcached.


# cd /usr/bin
/usr/bin# ldd memcached
        linux-gate.so.1 =>  (0xffffe000)
        libevent.so.1 => /usr/lib/libevent.so.1 (0xb7edc000)
        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7d9b000)
        /lib/ld-linux.so.2 (0xb7ef9000)

Configuración de memcached en MediaWiki

Hay que editar el archivo LocalSetting.php y modificar las variables wgMainCacheType y wgMemCachedServers.

La variable wgMainCacheType toma como valor una constante. La siguiente lista contiene las constantes que pueden ser asignadas, no voy a entrar en detalle en el uso específico de cada una.

  • CACHE_ANYTHING
  • CACHE_NONE
  • CACHE_DB
  • CACHE_MEMCACHED
  • CACHE_ACCEL
  • CACHE_DBA

$wgMainCacheType = CACHE_MEMCACHED;
$wgMemCachedServers = array( "127.0.0.1:11211” );

Para poder asignar el valor correcto en wgMemCachedServers, necesitamos saber porque puerto está escuchando memcached. Esta información se encuentra detallada en /etc/memcached.conf. Dejo un fragmento del archivo.


# Default connection port is 11211
-p 11211

# Run the daemon as root. The start-memcached will default to running as root if no

Bibliografía