2009-08-21 8 views
0

Ok, voici l'arrière-plan. Nous avons une configuration d'environnement en cluster pour l'exécution de notre serveur coldfusion, elle est fondamentalement divisée en deux instances différentes, auxquelles l'adresse générique redirige les requêtes. J'ai ma configuration d'application pour m'envoyer des e-mails chaque fois qu'une erreur est détectée par un utilisateur. Au cours de la dernière semaine, j'ai eu des cas, où j'ai reçu plus de 500 e-mails d'erreur pendant plus de 5 minutes pour un utilisateur lorsqu'ils passent par l'application en question. Dans des circonstances normales, je pourrais recevoir une douzaine toute la journée. Dans la plupart des cas, j'ai pu parler avec l'utilisateur peu après, et ils rapportent ne pas avoir reçu de page d'erreur, et qu'ils ont pu terminer leur transaction très bien.ColdFusion - Obtenir des rapports d'erreurs massives - Aucun problème indiqué par les utilisateurs

L'application impliquée, est assez simple, l'utilisateur se connecte, ils parcourent environ 6 pages différentes, chacune soumettant des données postées du formulaire au suivant, ces variables de formulaire sont nécessaires pour continuer. L'erreur que je semble obtenir pour chacune de ces collections d'e-mails massifs est l'absence de la première variable de formulaire recherchée sur chaque page. "Message d'erreur: Element SESSION_ID n'est pas défini dans FORM." - apparemment à chaque fois. Lorsque je regarde les courriels d'erreur, je peux voir la page de renvoi et la page de rapport, et suivre l'utilisateur qui traverse l'application d'une étape à l'autre jusqu'à la fin - générant des dizaines d'e-mails d'erreur pour chaque page. Une de mes hypothèses est, le serveur en cluster envoie des demandes aux deux instances de l'application, sur chacun des serveurs physiques, et celle sur laquelle réside la session de l'utilisateur passe bien, mais la demande à la "non utilisée" "Le serveur reçoit la requête sans les données du formulaire et déclenche ces messages d'erreur. Est-ce plausible? Action de grâce


Informations complémentaires - je ne faisais que déversait dans mes rapports, et l'autre principale similitude entre tous ces événements est que la variable CGI.referrer (que j'envoie dans mon email d'erreur) n'est pas remplie. Dans tous les cas, aucun d'entre eux ne transmet le cgi.referrer, mais dans tous mes rapports d'erreurs, il est ajouté. Je pensais que c'était curieux ..

+0

si vous avez un équilibreur de charge devant 2 serveurs Web, cela peut arriver. Mais la plupart des équilibreurs de charge sont configurés avec des sessions persistantes, où lorsqu'un utilisateur arrive et est dirigé vers un serveur, il reste "attaché" à ce serveur. Transmettez-vous l'ID de session via l'URL? Sinon, essayez de désactiver les cookies dans votre navigateur, et voyez si vous pouvez le recréer. Cela pourrait le faire. . . – andrewWinn

+0

C'est intéressant - je vais essayer de mettre cela en place. TY –

+0

Dang, nos applications résident derrière Blackboard, qui nécessite un cookie pour s'authentifier.Peut-être que je peux configurer une application de test qui ne passe pas par le tableau pour l'essayer. –

Répondre

0

Cela peut être dû au fait que les vars CGI ne sont pas toujours définis. c'est vraiment au serveur Web de les transmettre. Vous pouvez tester leur existence avant selon eux ... quelque chose comme ça ...

<cfif CGI.varname IS NOT ""> 
    CGI variable exists 
<cfelse> 
    CGI variable does not exist 
</cfif> 

ou peut-être même un CFPARAM pour vraiment faire en sorte que vous avez votre CGI vars là-bas.

Espérons que cela aide.

0

D'accord, faites un cfparam pour une valeur par défaut, dans le cas de variables cgi qui peuvent ne pas être transmises par les serveurs en cluster.

Aussi peut-être utile d'ajouter quelques vérifications à vos rapports d'erreurs, donc au lieu de 1000 de courriels signalant la même variation des bugs 1-2, vous avez juste 1 résumé email ... Moins de tracas alors devoir tout supprimer ces énormes e-mails supplémentaires.