2010-08-23 2 views
3

Nous avons un problème avec la session PHP lorsque APC est activé sur notre serveur.Problèmes de session lors de la mise sous tension de l'APC

L'application fonctionne très bien sans APC. Cependant, depuis que nous avons activé APC, les sessions semblent être mélangées lorsque le serveur subit une forte charge, c'est-à-dire que les utilisateurs se connectent de manière aléatoire comme un autre. Tout redevient normal une fois que nous avons désactivé APC. Nous ne pouvons pas trouver quelqu'un avec le même problème, sauf un problème connexe avec ces gars (set-cookie a été mis en cache dans MS ASP): http://msdn.microsoft.com/en-us/magazine/cc163577.aspx#S2

Quelqu'un d'autre a une expérience similaire? Pouvez-vous recommander des suggestions? PS: Nous avons toutes nos sessions gérées par des fichiers dans php.ini. Nous courons aussi apache2.

+0

FWIW Je n'ai jamais eu de problème avec APC/sessions quelle que soit la charge – symcbean

+0

Quel gestionnaire de session utilisez-vous? Quelle version de PHP/APC? – Matthew

+0

Nous utilisons PHP version 5.2.4 – tanvach

Répondre

0

bien s'il vous plaît vérifier que apc mélange vraiment des données ... le seul possible que je puisse penser quand cela pourrait arriver est quand il devient plein et fait un stackoverflow. s'il vous plaît vérifier l'utilisation et maby augmenter la taille du cache.

+0

Nous sommes à peu près sûrs que c'est le cas, bien qu'il soit possible que ce soit un bug qui n'arrive que lorsque deux utilisateurs accèdent simultanément à une fonction. En activant APC, nous pouvons servir plus de req/s, ce qui augmente la probabilité pour eux de le faire. – tanvach

0

Un problème est survenu avec APC lorsque les objets de gestion de session personnalisés sont détruits avant l'enregistrement des données de session. Il pourrait être sans rapport avec votre problème, mais un appel explicite à session_write_close avant l'arrêt de PHP régulier corrige celui-là. Votre problème semble un peu différent, mais je peux confirmer que des problèmes existent.

+0

Merci, nous allons regarder dans cela aussi. – tanvach

0

Juste pour terminer le poste, nous avons réussi à réduire ce problème avec trois choses:

1) Nous avons fait des contrôles supplémentaires pour vous assurer que l'adresse IP est adaptée à l'ID de session et déconnecter l'utilisateur autrement. Nous pourrions alors utiliser ceci pour suivre la fréquence du problème.

2) Nous sommes passés à XCache et avons immédiatement vu un nombre inférieur d'identifiants de session confus. Cependant, sous une charge très lourde, le problème fait de nouveau sa tête laide.

3) Nous doublons ensuite la mémoire pour Xcache dans la configuration php (xcache.size et xcache.var_size) et maintenant le problème est disparu. Par conséquent, nous soupçonnons que le problème est dû à un manque de mémoire APC ou Xcache. Nous attendons toujours de voir si c'est une solution permanente.

2

Nous avons un problème similaire ici. APC est seulement un suspect principal à ce stade parce qu'il a été difficile à reproduire. Nous utilisons Zend Framework avec gestion de session et la théorie est que le code de Zend est mis en cache dans APC et lorsque le système est sous forte charge, le code utilise un SID précédemment mis en cache au lieu de celui en cours.

Notre sauvegarde consiste à enregistrer l'ID de session dans les données de session et à comparer les valeurs lorsque la session est récupérée. Si les ID sont différents, nous détruisons la session et sortons.

Questions connexes