Frage

Eine der interessanteren „Features“ in Coldfusion ist, wie es externe Anforderungen verarbeitet. Der grundlegende Kern davon ist, dass, wenn eine Abfrage zu einer externen Quelle durch <cfquery> oder oder andere externe Anforderung dergleichen hergestellt ist, dass er übergibt die externe Anfrage an einen bestimmten Fahrer und an diesem Punkt CF selbst nicht in der Lage ist, es zu suspendieren. Selbst wenn ein Timeout auf der Abfrage oder in der cfsetting angegeben wird, wird er rundweg für alle externen Anfragen ignoriert.

http://www.coldfusionmuse.com/index .cfm / 2009/6/9 / killing.threads

Also in diesem Sinn das Problem, das wir in laufen habe ist, dass irgendwie die Kommunikation zwischen unseren CF-Server und unser mySQL-Server geht manchmal schief und Blätter hinter blockierte Threads. Sie haben die folgenden Eigenschaften.

  1. Die blockierter Thread zeigt in CF und kann nicht von FusionReactor getötet werden.
  2. Es ist nicht blockierter Thread sichtbar in mySQL, und keine aktive Lauf Abfrage (nur die üblichen Betten).
  3. Die Datenbank auf andere Anrufe reagiert und scheint korrekt arbeitet zu werden.
  4. Max-Verbindungen wurden für die DB noch den Benutzer nicht erreicht wird.

Es scheint mir der einzige Kandidat ist, dass irgendwie CF einen Antrag macht, mySQL auf diese Anforderung reagiert aber mit einer Antwort, die CF ignoriert und den Faden öffnen Sie warten auf eine Antwort von mySQL halten weiter. Das würde erklären, warum die Datenbank keine Anzeichen von Problemen zu zeigen scheint, aber CF hält einen Thread offen Warten auf die geheimnisvolle Antwort.

Regel diese blockierte Threads erscheinen zufällig auf andere Weise arbeiten Skripte (zB einen Kommentar zu einem Nachrichtenartikel veröffentlichen). Auch während eines Thread für das Skript aufgehängt wird, können andere Anforderungen für das Skript durchlaufen werden, was bedeuten würde, dass das Skript muß nicht zwangsläufig fehlerhaft ist, sondern vielmehr die Bedingung gestellt, wenn das Skript ausgeführt wurde.

Wir einige Test lief, um festzustellen, dass es kein mysql erzeugt max_connections Fehler ... wir einen Benutzer erstellt, gab es 1 max Verbindungen, gebunden, dass die Verbindung mit einem Schlaf (1000) Abfrage und eine weitere Abfrage ausgeführt. Leider ist es richtig errored, ohne ein blockierter Thread zu erzeugen.

Also, ich bin mit absolut keine Ahnung, an dieser Stelle nach links, was falsch läuft. Gibt es irgendeine andere Verbindungslimit oder Timeout, die die Kommunikation zwischen den Servern verursachen könnte schief gehen?

War es hilfreich?

Lösung 3

Lange Rede kurzer Sinn, aber ich glaube, war die, verursacht durch Coldfusion des CF8 Bildverarbeitung. Es war nur Buggy und jetzt in CF9 habe ich noch nie gesehen, dass Problem wieder.

Andere Tipps

Eines der Dinge, die Sie sollten zu betrachten beginnen ist die Hardware zwischen den beiden Servern. Es ist möglich, dass Sie einen Router oder eine Brücke oder NIC, die gelegentlichen Pakete fallen zu lassen. Dies kann in der mySQL-Box Denken führen es die Aufgabe beendet hat, während der CF-Server für eine vollständige Antwort gibt und wartet sitzt auf unbestimmte Zeit, ein blockierter Thread zu schaffen.

3com hat einige Details über die Prüfung für Paketverlust hier: http://support.3com.com/infodeli/tools/netmgt/tncsunix/product/091500/c11ploss.htm#22128

Wir hatten ein ähnliches Problem mit einem MS SQL Server. Dort war die Ursache ein bekanntes Problem in der, aus irgendeinem Grunde, der Server denkt, dass es heruntergefahren, und der Faden hängt (auch wenn der Server ist, natürlich, nicht heruntergefahren).

Wir waren nicht in der Lage, das Problem zu beseitigen, aber waren in der Lage, es zu reduzieren, indem sie aus gepoolten DB-Verbindungen drehen und mit dem Verbindungs ??Bildwiederholfrequenz Hantieren. (Ich glaube ich das Etikett richtig verstanden habe -. Keinen Zugang zu Administrator an meiner neuen Beschäftigung) Sowohl in den Verbindungseigenschaften in Administrator ist

.

Nur ein Hinweis: Das Problem ist nicht vollständig mit CF. Das Problem wirkt sich offenbar alle Java-Anwendungen. Welche nicht, in irgendeiner Weise reduzieren, wie verärgert ich durch diesen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top