OVH Community, votre nouvel espace communautaire.

Pertes de sessions intempestives, problème critique


Antoine.P
11/03/2015, 17h10
Citation Envoyé par jgrmstr
Merci pour l'astuce, je vais essayer ça.
Mais quelles sont les conséquences sinon de passer en 32 bits ?


@Rizz, je montre du code dès que je serai chez moi.
Sur un "simple" site web, ca ne fait aucune différence.

Rizz
10/03/2015, 00h02
Oui
Mais pour qu'un serveur reconnaisse une session il faut bien qu'il la compare à quelque chose et il ne peut pas faire référence qu'a un cookie coté client... qui est modifiable à souhait. Enfin peut être que je me plante mais à priori si tu peux la stocker en base c'est qu'elle est stockable et stocker de bien d'autre façon avant ça. Donc si c'est pas ton cookie ou ta façon de gérer la session qui déconne c'est qu'elle est perdu .. quelque-part coté serveur/loadBalancer/"architecture qui me dépasse".. Mais pour en être sur ... le mieux c'est le voir de ces propres yeux donc d'en maitriser aussi le stockage coté serveur ... ( sans forcement parler sql si y'a d'autre moyen simple )

https://msdn.microsoft.com/fr-fr/lib...vs.100%29.aspx

jgrmstr
09/03/2015, 21h51
@Rizz
J'ai l'impression que parles de sessions PHP.
Moi je suis sur ASP.NET, il n'y a pas de répertoire de stockage des sessions il me semble.

Sinon voici pour le code qui crée les cookies :
Code:
private IAuthenticationManager AuthenticationManager
{
    get
    {
        return HttpContext.GetOwinContext().Authentication;
    }
}
...
AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, await user.GenerateUserIdentityAsync(UserManager));
....
public async Task GenerateUserIdentityAsync(UserManager manager)
        {
            // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
            var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
            // Add custom user claims here
            return userIdentity;
        }
Et la conf de OWIN :
Code:
app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
                LoginPath = new PathString("/Account/Login"),
                // http://www.kadiravci.com/Article/Details/1035 pour explications
                ExpireTimeSpan = TimeSpan.FromDays(2), // JRA / définit la durée de validité du cookie d'auth
                SlidingExpiration = true, // JRA
                Provider = new CookieAuthenticationProvider
                {
                    OnValidateIdentity = SecurityStampValidator.OnValidateIdentity(
                        validateInterval: TimeSpan.FromMinutes(30), // définit la durée à laquelle le security stamp est checké (le security stamp change par exemple après un password reset)
                        regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
                }
            });

Rizz
09/03/2015, 21h17
Pour moi des qu'une session se ferme après quelques minutes ... c'est qu'elle est perdu.
Un moyen simple de savoir si leur destruction est du à l'archi OVh c'est deja d'en changer le répertoire de stockage et de les conserver sur ton hébergement. Si tu touche pas plus que normalement tes sessions ne se ferme juste jamais ( pour les crasher suffit de delete le fichier session de chacun des utilisateurs ).
Pour gerer la durée max de tes sessions .. tu delete les fichiers qui n'ont pas été updaté depuis XXX min.... si toutefois tu met régulièrement des choses dans ce fichier de session..

De mémoire y'a enviion 15 mois sur le mutu linux les sessions ne fonctionnait juste pas sur mon perf. OVH à accuser un pauvre routeur cisco de pas faire son travail et de renvoyer les requetes des clients sur des frontaux différent a chaque fois. La perte de session était immédiate sur un changement de frontaux et pouvait avoir l'air de durée plus longtemps dans le cas d'inactivité coté utilisateur... cad qu'il vous dit que la session dure 3 min mais en fait elle est coupé depuis 2min59 et le client ne le voit pas;

Je pense pas que ce soit si compliqué, ni qu'il y aura besoin de mettre des sessions en bases. ( je vois pas l'interet .)

jgrmstr
09/03/2015, 18h16
Citation Envoyé par Antoine.P
Avant de tout changer, fais un petit test très simple. Dans ton manager, change la configuration de ton pool en 32 bits (ca se trouve dans la partie version framework) ca devrait limiter très fortement les recyclages de ton pool, et donc éviter les déco
Merci pour l'astuce, je vais essayer ça.
Mais quelles sont les conséquences sinon de passer en 32 bits ?


@Rizz, je montre du code dès que je serai chez moi.

Antoine.P
09/03/2015, 18h05
Avant de tout changer, fais un petit test très simple. Dans ton manager, change la configuration de ton pool en 32 bits (ca se trouve dans la partie version framework) ca devrait limiter très fortement les recyclages de ton pool, et donc éviter les déco

Rizz
06/03/2015, 20h35
On peut voir un peu de code ? J'ai un doute sur le fait que ce soit des sessions gerer par cookie ( en dehors de ce qu'une gestion a la con de session demande en terme de cookie biensur , cad 1 cookie avec 1 sessid mais y'a pas de gestion particuliere a faire.)

jgrmstr
06/03/2015, 19h32
Citation Envoyé par Rizz
Je comprend pas trop l’intérêt de gérer tes session avec des cookies ... Tu n'a pas l'impression de t'apporter des pb tout seul ?
Quelles autres solutions ?
J'ai utilisé le système d'authentification fourni au démarrage d'un projet MVC 5 tout simplement.

Rizz
06/03/2015, 17h48
Je comprend pas trop l’intérêt de gérer tes session avec des cookies ... Tu n'a pas l'impression de t'apporter des pb tout seul ?

Nowwhat
06/03/2015, 15h10
Citation Envoyé par jgrmstr
.....
@Nowwhat, sais-tu si Windows Azure permet une administration plus simple qu'un VPS ?
Euh, ..... comment te dire ça ...
Je me bat avec la version 2.11 = "Version Bureau" depuis 1989.
J'ai un version "2008 serveur R2" que pour moi au boulot - je ne le touche pas trop.

C'est ne pas moi qui utilisera des sites grand publique sur des serveurs sur le net avec un OS de Redmond.
Leurs OSes Serveur sont probablement de bonne qualité - du moment qu'on les maitrise. Ce qui n'est pas mon cas

jgrmstr
06/03/2015, 14h54
C'est très contraignant d'être limité à du MySQL... L'offre Windows mutu est d'ailleurs trop limitée et contraignante...

@Nowwhat, sais-tu si Windows Azure permet une administration plus simple qu'un VPS ?

JuGU
05/03/2015, 16h03
@jgrmstr

Tu peux commander un SQL Privé qui sera compatible avec l’hébergement Windows, mais tu n'auras que du MySQL.

jgrmstr
05/03/2015, 15h44
Merci de ton avertissement Nowwhat, car il est vrai que côté admin serveur je ne suis pas formé... Je pensais justement que les VPS étaient faciles à administrer car virtualisés.

Après si je dois garder le mutualisé + le VPS ça commence à faire cher... Je ne sais pas quoi faire du coup.

Est-il possible sinon d'avoir une deuxième BDD SQL dans mon mutualisé Windows ? Sur le manager (ancienne interface) je ne vois pas de bouton pour commander de BDD supplémentaire.

Nowwhat
05/03/2015, 15h26
Citation Envoyé par jgrmstr
Comment faire pour garder le même NDD que j'ai eu avec mon mutualisé ?
Un domaine domaine peut se faire pointer "sur simple clique" vers un autre IP - disons que lui de ton VPS.
Imagine toi bien, le nom de domaine cornant un serveur web (http et https) utilisent le champ A (IP4v) et AAAA IPv6).
Ceci est système un poil compliqué pour te faire comprendre que ..... tes mails restons sur le Mutu (garde le pour l'instant, t'en aura vraiment besoin !!)

Citation Envoyé par jgrmstr
Et vu que j'ai déjà payé l'année entière pour le mutualisé, si je prends un VPS maintenant, je vais perdre mes sous ?
Non.
Car je te conseille de garder l'hébergement pour l'instant.
Maitriser un OS "serveur" du firme Redmond demande bien plus que dire "j'ai un PC avec avec un Microsoft x donc l'OS serveur, i.e.2008 ou 2012, ça va être pareil".
C'est négatif.
Gérer IIS, c'est encore autre chose. MSSQL ressemble à MySQl, mais pas tout à fait. Etc.
Et tes mails ? Vire ton hébergement et tu va gérer ton serveur mail à toi ......Façon Crosoft. C'est du black magic tout ça (car on trouve peu sur le net concernant le sujet, car l'info est ... payant)
Bref, si t'as un max de points DIFF, pourquoi pas ....

De plus, l'OS Microsoft n'est pas gratuit - quoi que 'inclus' avec la version VPS-Cloud.

Je te demande de réfléchir: tu trouve que c'est compliqué de crée une table dans ta base SQL pour gérer les sessions, alors tu considère de passer au VPS .... de gérer un serveur quasi dédié avec la charge de maintenance de l'OS à 100 % pour toi.
Tu veux vraiment savoir ce que c'est de paramétrer un serveur web style Redmond ? Un serveur mail ?
[ Puis, pourquoi que 10 à 20 des serveurs mail et web sur le net sont de Microsoft, et quasiment toutes les autres au base de Linux/FreeBSD/divers ? - il y à un raison]

JuGU
05/03/2015, 14h35
Oui, dans l'ancienne interface de l'espace client. Clique sur administration, procédure, puis procédure de fermeture d'hébergement mutualisé.

Précise sur le formulaire vers quel hébergement tu souhaites reporter le crédit de temps.

jgrmstr
05/03/2015, 14h28
Ah quand même, et comment engage-t-on une telle procédure ? Il y a un formulaire quelque part ou il faut contacter une adresse mail ?

JuGU
05/03/2015, 14h11
Pour le domaine, il te suffira de le faire pointer vers ton VPS via son IP.

Pour l'hébergement, il ne sera pas possible de transférer le crédit de temps sur le VPS car la facturation est différente, mais si tu disposes d'un autre hébergement Windows ou un hébergement Linux, en faisant une procédure de fermeture d'hébergement, tu peux demander à reporter le crédit de temps sur un autre hébergement Web.

jgrmstr
05/03/2015, 12h15
Comment faire pour garder le même NDD que j'ai eu avec mon mutualisé ?

Et vu que j'ai déjà payé l'année entière pour le mutualisé, si je prends un VPS maintenant, je vais perdre mes sous ?

JuGU
05/03/2015, 10h56
Il n'y a pas de migration automatisée entre un mutualisé Windows et un VPS, car ce ne sont pas les mêmes infrastructures.
Il te faudra réimporter les données toi-même.

jgrmstr
05/03/2015, 10h35
Et peut-on passer, simplement, d'un mutualisé Windows à un VPS Windows ?

JuGU
04/03/2015, 16h53
Dans ce cas, un VPS me semble la solution la plus optimale.

jgrmstr
04/03/2015, 16h30
Décidément, on peut vraiment pas faire grand chose avec un mutualisé Windows...

Je n'ai qu'une BDD avec mon hébergement, je n'ai pas envie d'y mettre le bordel en ajoutant les tables et procédures nécessaires pour la gestion des sessions en BDD...

JuGU
04/03/2015, 16h11
Bonjour jgrmstr

Il te faudra en effet mettre ta session en BDD, ou alors envisager le passage vers un VPS.

jgrmstr
04/03/2015, 11h52
Bonjour,

Sur mon site je gère un espace membre, dont l'authentification est réalisée avec OWIN et les sessions via cookies (cookie de session + cookie d'application). J'ai réglé mon app pour que la session expire après 3 jours.

Mais malheureusement, mes membres sont déconnectés très souvent (la durée des sessions va de quelques secondes à plusieurs minutes)...

Je soupçonne le pool d’application d'être recyclé trop souvent, et comme on ne peut pas utiliser le sessionState en mode "StateServer", comment faire pour palier ce problème technique ?

Il y aurait peut-être possibilité de mettre la session en BDD (avec le mode "SQLServer"), mais je n'ai droit qu'à une seule BDD... Et je n'ai pas envoe de mélanger toutes sortes de tables dans la BDD de mon application...