2010-05-17 10 views
5

Utilizando la nueva extensión PHP pecl/memcached. Llamadas a Memcached :: setOption() como;Extensión PHP pecl/memcached lenta cuando se establece la opción para hash consistente

$m = new Memcached(); 
$m->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT); 

cuestan entre 150 y 500 ms - sólo en hacer la llamada a setOption() y como no estamos usando conexiones persistentes, sino más bien hacer esto en cada petición, duele.

Profundizando, el establecimiento de Memcached :: OPT_DISTRIBUTION a Memcached :: DISTRIBUTION_CONSISTENT termina llamando update_continuum() en libmemcached que parece ser bastante intensa, aunque sólo estamos pasando una lista de 15 servidores memcached en, por lo tanto sorprendente ver que toma entre 150 y 500 ms para reconstruir la estructura de datos continuos.

¿Podría estar estableciendo que esta opción solo es adecuada para conexiones persistentes, donde se llama solo una vez mientras se realiza la conexión inicial? ¿O es esto un error libmemcached?

Utilizando la más reciente pecl/extensión memcached 1.0.1 con libmemcached 0,38

Gracias.

+0

Es mejor para informar de esta cuestión directamente a Andrei: https://github.com/andreiz/php-memcached – Till

Respuesta

2

libmemcached 0.38 es bastante antiguo en este punto. Lo mismo ocurre con pecl/memcached 1.0.1. ¿Podría probar la versión pecl/memcached 2.0.0b1 de github?

0

Mismo problema con pecl/memcached 2.2.0 (lo último de PECL en cuanto se escribe). La única solución para mí era cambiar de DISTRIBUTION_CONSISTENT a:

$memcached->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true); 
$memcached->setOption(Memcached::OPT_REMOVE_FAILED_SERVERS, true); 

Parece que funciona bien:

var_dump($memcached->getServerByKey($key)['host']); 
// string '192.168.56.1' (length=12) <== dead host 

$memcached->set($key, $result, 3600); 

var_dump($memcached->getServerByKey($key)['host']); 
// string '127.0.0.1' (length=9) <== working host 

var_dump($memcached->getLastErrorMessage()); 
// string 'SUCCESS' (length=7) 
Cuestiones relacionadas