2009-08-21 5 views
0

Ok, hier ist der Hintergrund. Wir haben eine Cluster-Umgebung zum Ausführen unseres Coldfusion-Servers eingerichtet, die sich im Wesentlichen in zwei verschiedene Instanzen aufteilt, an die die generische Adresse Anfragen weiterleitet. Ich habe meine App so eingerichtet, dass sie mir E-Mails sendet, wenn ein Benutzer einen Fehler feststellt.ColdFusion - massive Fehlerberichte erhalten - keine Probleme von Benutzern

In der letzten Woche hatte ich Fälle, in denen ich 500+ Fehler-E-Mails über 5 Minuten für einen Benutzer erhalten habe, als sie die entsprechende App durchlaufen. Unter normalen Umständen könnte ich den ganzen Tag ein Dutzend bekommen. In den meisten Fällen konnte ich kurz darauf mit dem Benutzer sprechen, und sie berichten, dass sie keine Fehlerseite erhalten haben und dass sie ihre Transaktion gut abschließen konnten.

Die App beteiligt ist, ist ziemlich einfach, der Benutzer anmeldet, gehen sie durch etwa 6 verschiedene Seiten, die jeweils einreichen Formular versandte Daten an die nächste, diese Form Variablen erforderlich sind, um fortzufahren. Der Fehler, den ich für jede dieser Sammlungen von massiven E-Mails zu bekommen scheint, ist die Abwesenheit der ersten Formvariablen, die auf jeder Seite gesucht wird. "Fehlermeldung: Element SESSION_ID ist in FORM nicht definiert." - scheinbar jedes Mal.

Wenn ich mir die Fehler-E-Mails anschaue, kann ich sehen, was die verweisende Seite und die Berichtsseite waren, und den Benutzer durch die App von Schritt zu Schritt bis zur Fertigstellung verfolgen Seite.

Einer meiner Hypothesen ist, der geclusterte Server sendet Anfragen an beide Instanzen der App, auf jedem der physischen Server, und derjenige, auf dem die Sitzung des Benutzers residiert, läuft gut, aber die Anfrage an die "unbenutzt "Der Server erhält eine Anfrage ohne die Formulardaten und löst diese Fehler-E-Mails aus. Ist das plausibel? Thanks-


Zusatzinfo - ich gieße nur durch meine Berichte, und die andere Haupt Ähnlichkeit zwischen all diesen Ereignissen ist, dass der CGI.referrer Variable (die ich in meinem Fehler E-Mail) nicht belegt ist. In jedem Fall dieser Massen-E-Mails, keine von ihnen übergeben die cgi.referrer, aber in allen meinen normalen Fehlermeldungen, es wird hinzugefügt. Ich dachte, das war neugierig ..

+0

Wenn Sie einen Load Balancer vor 2+ Webservern haben, könnte dies passieren. Die meisten Load-Balancer sind jedoch mit "sticky" -Sitzungen ausgestattet, bei denen ein Benutzer, der zu einem Server weitergeleitet wird, an diesem Server "angehängt" bleibt. Übergeben Sie SessionID über die URL? Wenn nicht, versuchen Sie, Cookies in Ihrem Browser zu deaktivieren und zu überprüfen, ob Sie sie wiederherstellen können. Dies könnte es tun. . . – andrewWinn

+0

Das ist interessant - ich werde versuchen, das einzurichten. TY –

+0

Dang, unsere Apps befinden sich hinter Blackboard, das zur Authentifizierung einen Cookie benötigt.Vielleicht kann ich eine Test-App einrichten, die nicht über die Tafel läuft, um das auszuprobieren. –

Antwort

0

Es kann aufgrund der Tatsache sein, dass die CGI-Variablen nicht immer definiert sind. Es liegt wirklich am Webserver, sie weiterzugeben. Sie können für ihre Existenz zu testen, bevor je nach ihnen ... so etwas wie dieses ...

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

oder vielleicht sogar ein cfparam wirklich sicherstellen, dass Sie Ihre CGI dort Vars.

Hoffe, das hilft.

0

Vereinbar, machen Sie ein cfparam für einen Standardwert, im Falle von cgi-Variablen, die nicht von den geclusterten Servern übergeben werden können.

Es könnte sich auch lohnen, die Fehlerberichterstattung etwas zu überprüfen. Statt 1000er E-Mails, die die gleiche Variante der 1-2 Fehler melden, haben Sie nur 1 Zusammenfassungs-E-Mail ... weniger Aufwand, dann müssen alle gelöscht werden diese riesigen zusätzlichen E-Mails.