Este es un problema que comencé a experimentar hace unos meses y he intentado solucionarlo sin éxito desde entonces.sesiones de Symfony 1.4 perdidas al azar
Síntomas: En intervalos de tiempo aleatorios, Symfony pierde la información de la sesión y cierra la sesión de los usuarios. Parece de alguna manera estar conectado con la carga del sitio. Cuando la carga es más alta, parece que los usuarios cierran la sesión con más frecuencia, incluso a los 30 segundos.
Entorno: Desde que esto comenzó, he cambiado mucho la configuración, incluida la versión de php, el servidor web, el almacenamiento de sesiones, la versión de Symfony. Aquí está la configuración actual: Ubuntu 10.04, php 5.4.0, Symfony 1.4.17, nginx 1.0.15 con FPM. Así es como el almacenamiento de sesión se configura en factories.yml:
user:
class: myUser
param:
timeout: 86400
use_flash: true
storage:
class: sfCacheSessionStorage
param:
cache:
class: sfMemcacheCache
param:
lifetime: 86400
host: 192.168.1.3
serializer: IGBINARY
mode: compiled
port: 11211
tengo que mencionar que también he utilizado para el almacenamiento Redis sesión y todavía tenía el problema. Realmente no tengo idea de qué probar a continuación. ¿Alguien más experimentó algo similar? En esta etapa, cualquier pista sería muy apreciada.
Actualización: Después de meses de búsquedas y un sinnúmero de pruebas y errores, creo que podría ser un problema de simultaneidad. Nuestro sitio es bastante pesado en las solicitudes de AJAX y he aprendido que puede provocar problemas con las sesiones a menos que se implementen mecanismos de bloqueo adecuados en el controlador de sesión. Primero eliminé Symfony de la ecuación, lo configuré para usar sesiones php. Con el almacenamiento predeterminado de la sesión de archivos, nunca pierdo ninguna sesión. Luego configuré php para usar el almacenamiento de la sesión de Memcache. Sin duda, hemos comenzado a ver sesiones perdidas. Estoy 100% seguro de que memcached no se está quedando sin memoria, he instalado una herramienta de administración y el servidor memcached apenas usa el 2% de los 8GB asignados (sin desperdicio, la memoria se asigna según sea necesario). Luego he agregado un segundo servidor memcached y configuré el controlador de sesión para utilizar la redundancia. Esto ayudó mucho, rara vez perdí sesiones. Por ahora este es un compromiso aceptable.
¿Está utilizando Memcache como mecanismo de almacenamiento de sesión? Si es así, me imagino que Memcache está tirando una sesión mientras que viene una nueva - el almacenamiento de Memcache no está garantizado, por diseño. Aumente la memoria disponible para Memcache, o mejor aún, use otro mecanismo de persistencia. – halfer
Como mencioné, usé otros motores de almacenamiento de sesión, como redis, que no descarta datos. Además, nunca he visto Memcache para usar más de 1GB, aunque está configurado para usar hasta 8GB. – dcb
Ah, puede haberme perdido eso, a menos que ese detalle se haya agregado en una edición posterior.¿Se está probando el comportamiento exhibido en un servidor de desarrollo, quizás usando 'ab'? ¿Necesitas PHP 5.4? De lo contrario, retroceda a 5.3.x, o incluso a 5.2.x, y vea si eso hace la diferencia. – halfer