in

ASP.NET Weblogs

Sebastian's WebLog

.NET Architecture & Technologies

January 2005 - Posts

  • Böses Erwachen - vergessene Sql Connections

    Vor ein paar Tagen hat mich ein alter Freund beim Tässchen Kaffee nochmals auf die Bugs eines gemeinsamen Projektes hingewiesen. Sachen, die Anfangs nie problematisch schienen, fliegen einem später schnell um die Ohren, so auch der verschwenderische Umgang mit SqlConnections.

    Besonders während der Entwicklung fällt es nicht weiter auf, wenn die ein oder andere SqlConnection offen links liegen bleibt. - Keiner merkt es. Doch später, wenn die Anwendung erstmal richtig unter Dampf steht, kommt es zu ganz hässlichen Abstürzen: SqlTimeouts. Irgendwann kommt der Moment in dem ADO.NET keine Verbindung mehr öffnen kann - alle belegt.

    Sofortmaßnahmen sind gefragt: Connection-Pool hochdrehen, sofort! Wie lautet der Eintrag für unendliche Verbindungen? Schnell!! Gibts nicht? Okay - 5.000 reichen erstmal.

    Als nächstes steht eine Menge Reengineering auf dem Plan: jeden Aufruf kontrollieren und dafür sorgen, dass die Connection zeitnah wieder geschlossen wird. Oh nein, die Anwendung ist aber langsam geworden! Ja, aber dafür stützt sie nicht mehr ab ....

    Ein zeitiger Lasttest hätte diesen Fehler früher zu Tage gebracht, auch im letzten Projekt brachte er uns zahlreiche, vergessene SqlConnections und weitere Multi-User Probleme auf den Tisch. Besser da, als im Produktivbetrieb ...

    Ein paar Gedanken zum Schluss:

    • Connections so kurz wie möglich offen halten
    • Ein Connection.Close() gibt Ressourcen im Pool frei, nicht direkt auf dem Sql Server (geht also eigentlich recht fix)
    • Trotz Pool ist eine ständige, offene Verbindung schneller. Trotzdem: lohnt nicht, s.o.
    • Mit using gegen den inneren Schweinehund angehen
      using (SqlConnection conn = MyDB.GetConnection()){
         ...Statements...
      }
    • Verbindungen mit Performance-Monitor überwachen
    • Eine Anwendung verhält sich zur Laufzeit anders, als zur Entwicklung - Multi User, nie vergessen!!
  • Sql Server 2000 SP4 und Reporting Services SP2 Beta

    Nicht alles dreht derzeit sich um Sql Server 2005, denn Microsoft lädt zum Beta-Programm für das Sql Server 2000 SP4 und dem SP2 für die Reporting Services.

    Während das Sql Server 2000 SP4 sich primär um kleinere Bug Fixes und dem 64Bit Support kümmert, kommt das SP2 für die Reporting Services mit einer Hand voll neuen Features: client-side printing und SharePoint WebParts zur Anzeige von Berichten.

    Wer bis zum Release nicht warten mag, kann sich hier für die Beta anmelden:
    http://www.microsoft.com/sql/evaluation/betanominations.asp

  • Codezone - weiter geht's!

    Keiner sagt es jedoch so schön wie Damir:

    Die drohende Gefahr für wenig bekannte Mitglieder der Community von den Mitmenschen übersehen zu werden, treibt die wackere Truppe der Codezone Editoren und Experten zu ihrem grössten Coup. Auf der Suche nach der, zumindest SQLbasierten Unsterblichkeit, und damit auf der Spur dauerhafter Anerkennung blasen sie zum Sturm auf die letzten Bastionen. Durch ihre spektakuläre Sammelaktionen drängen sich die Links zu den mal mehr, mal weniger bekannten Inhalten auf überaus eindrucksvolle Weise in das Leben ihrer Mitmenschen. Nicht länger kann man sie unbeachtet ausgrenzen, oder in den ach so wohltuenden Ruhestand abschieben. Es gilt sich mit ihrem Vorhaben auseinanderzusetzen und sie ernst und damit wichtig zu nehmen.

    Jetzt weiß ich auch, was er in seinen Weihnachtsferien gemacht hat ....

More Posts