Instalación y configuración de memcached en MediaWiki
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.
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
- Más sobre memcached.[en.wikipedia.org]
- Expliación de configuración de memcached en MediaWiki.[mediawiki.org]
- Manual MediaWiki sobre wgMainCacheType.[mediawiki.org]
- Compilación y configuración de memcached en MediaWiki.[theplaz.com]
_enabledSocket.png)