Nós encontramos isso também, mas conseguimos investigar e descobrir exatamente o que está acontecendo. Os sintomas que encontramos foram que o memcache (com uma alocação de memória razoavelmente grande em execução em vários servidores) começou a despejar conteúdo. Isso é indesejável, pois pode afetar negativamente os visitantes atuais no site.
Ao monitorar o tráfego de rede, vimos mensagens do PHP para o Memcache da seguinte forma:
set memc.sess.key.abcdabcdabcdabcdabcdabcd 0 0 1823 dados ...
É o segundo zero que causa os problemas - isso dita a quantidade de tempo que o memcache armazena o item em cache. Ao defini-lo para zero, o memcache nunca expira este item. No seu caso, isso significa que os usuários podem retornar horas depois e continuar acessando seu site. Em nosso caso, o memcache estava sendo preenchido e causando o despejo dos dados desejados.
Eu cavei mais, e tudo se resume à extensão PHP memcached. A partir de 1.0.2 (que estamos executando), este código diz:
sess_lifetime = zend_ini_long(ZEND_STRL("session.gc_maxlifetime"), 0);
if (sess_lifetime > 0) {
expiration = time(NULL) + sess_lifetime;
} else {
expiration = 0;
}
Neste trecho, é ZEND_STRL("session.gc_maxlifetime")
que não está retornando o valor esperado. Isso foi relatado como um bug para o PHP, e uma correção para a biblioteca do memcached é descrita no link .
Eu implantei este patch, revisei o tráfego de rede e descobri que ele define o tempo de expiração conforme o esperado.