none
Muss der Report Server aus dem Standby / Ruhemodus geholt werden? Beim erster Versuch Report als PDF rendern ensteht ein Time-out RRS feed

  • Frage

  • Reporting Services 2005

    Hallo Community,
    ich habe ein kleines Programm geschrieben, das bei Ausführung auf den ReportServer zugreift und mir ein Report als PDF rendert und in einem definierten Verzeichnis auf der Fesplatte ablegt. Der PC auf dem der ReportServer läuft ist derselbe, von dem das Programm ausgeführt wird. Es ist also alles lokal auf einem Rechner. Das Problem ist nun, dass bei jedem ersten Ausführen des Programms, wenn der PC zuvor neu gestartet wurde das PDF nicht erstellt wird, da ein Time-out von der Datenbank zurückkommt. Es ist dabei egal, wie lange der Rechner schon läuft - beim ersten Versuch ein PDF zu erstellen entsteht ein Time-out. Beim zweiten Ausführen klappt es.

    Ich frage mich deshalb, ob der ReportServer vielleicht in einem Standby-Modus etc. sich befindet und geweckt werden will. Hat jmd. eine Idee/Lösung?

    Gruß Jens
    Montag, 20. Juli 2009 14:04

Antworten

  • Hallo Jens,
    ich kenne das Problem auch, dass sich ein Reporting Server schlafen legt (genauer der IIS) und z. B. das Deployment eines Reports fehlschägt. Nach dem Serverneustart muss der erste wohl in den sauren Apfel beissen. Für den weiteren Lauf, kannst Du z. B. im IIS Einstellungen vornehmen, um die Seiten länger am Leben zu halten. Ich habe auch schon mal von Programmen gelesen, die gescheduled einen Report öffnen, um den Server morgens früh schon mal warmlaufen zu lassen.
    Hier war auch eine Diskussion dazu:
    http://groups.google.de/group/microsoft.public.sqlserver.reportingsvcs/browse_frm/thread/6f37ccc753d7ed7a/dcada0681be23d24?lnk=st&q=reporting+services+first+access&rnum=6&hl=de#dcada0681be23d24

    Meine Doku dazu:
    Problem: Server ist beim ersten Aufruf zu langsam
    Ursache
    Wenn die Seite länger nicht benutzt wurde, legt der IIS diese schlafen

    Abhilfe
    IIS anweisen, diese Seite länger online zu halten
    URL im DNS eintragen lassen und ein ping auf die Adresse rechtzeitig morgens absetzen

    Anleitung IIS
    Öffnen des Internet Information Services (IIS) Manager
    Server-Knoten erweitern, danach den Knoten des Application Pools erweitern
    Evtl. wurde ein eigener Application Pool für die virtuellen Seiten des Reportserver & Reportmanager angelegt, dann diesen nehmen
    Im Standardfall hat der Application Pool für Reportserver den Namen DefaultAppPool
    Kontextmenü des verwendeten Application Pools aufrufen und dort Properties auswählen
    Zwei Einstellungen sind standardmässig gesetzt:
    In der Lasche Recycling gibt es eine Checkbox für Recycle worker processes - dies ist standardmässig auf 1740 Minuten gesetzt (29 Stunden). Das kann man so lassen
    Die andere Einstellung ist in der Lasche Performance - und hier wird es dann interessant ...
    Man beachte die Idle Timeout und erhöhe die Anzahl Minuten auf wenigstens 300 (=5 Stunden) (oder sogar auf 480 für 8 Stunden)


    Einen schönen Tag noch, Christoph Muthmann Microsoft SQL Server MVP, http://www.insidesql.org
    Dienstag, 4. August 2009 11:38

Alle Antworten

  • Hallo Jens,

    schau mal ob der folgende Artikel auf Dich zutrifft:
    SQL Server Reporting Server (SSRS) service is failing to start

    Allgemeiner beschreibt dies ein MS KB Artikel:
    Ein Dienst wird nicht gestartet und Ereignisse 7000 und 7011 werden in Windows Server 2003 protokolliert

    Gruß Elmar
    Montag, 20. Juli 2009 16:07
    Beantworter
  • Hallo Elmar,
    ein guter Artikel. Ich habe ihn auf jeden Fall gespeichert für etwaige Probleme in der Zukunft. Jedoch trifft es in diesem Fall denke ich nicht zu. Habe die Time-out Zeit auf 120 000 ms eingestellt und es funktioniert dennoch nicht.
    Ein VMWare Image von mir sollte eingentlich die gleiche Umgebung darstellen, wie bei dem Rechner, bei dem das Time-out kommt. Doch dort funktioniert es.
    Installiert ist auf beiden Rechner:
    - MS Server 2003
    - SQL Server 2005
    - IIS
    - ...

    Der Rechner auf dem das Time-out kommt, ist jedoch von der Hardwareseite deutlich langsamer. Deshalb dachte ich anfangs, dass dein Link das Problem behebt.

    Gibt es noch weitere Vorschläge, die ich probieren kann? Einstellungen im IIS?

    Gruß Jens
    • Bearbeitet jens1199 Mittwoch, 22. Juli 2009 11:21
    Mittwoch, 22. Juli 2009 09:13
  • Hallo Jens,

    hast Du mal die Laufzeit der zugrundeliegenden Abfragen gemessen?
    In Deinem Fall könnte ein Mitschnitt im SQL Server Profiler am schnellsten Werte liefern.

    Da beim ersten Aufruf die Daten von der Platte in den Speicher gelesen werden müssen,
    können Abfragen naturgemäß beim ersten Male deutlich länger dauern.

    Gruß Elmar
    Mittwoch, 22. Juli 2009 15:20
    Beantworter
  • Hallo Elmar,
    die Datenbankabfrage und somit auch der Report sind ziemlich klein und ich habe ein Time-out von 120 s eingestellt. Ich kann mir nicht vorstellen, dass es in meinem Fall deshalb "normal" ist. Die Datenbank hat 4 Tabellen, die Werte die per Joint aus den Tabellen geholt wird, sind nur kurze Strings und Integerwerte. Ein Query für den Report hat ca. 500 Tupel.

    Ich werde das mit dem SQL Server Profiler aber ausprobieren - hatte bis jetzt noch nie damit gearbeitet. Gibt es was dabei zu beachten?

    Gruß Jens
    Mittwoch, 22. Juli 2009 16:55
  • Hallo Jens,

    fürs einen ersten Test brauchst Du beim SQL Server Profiler nichts spezielles beachten:
    Verbindung mit dem Server aufbauen und die Standardprotokollierung aktivieren.

    Darüber solltest Du schon erkennen können, wieweit ein paralleler Start
    der Reporting Services kommt bis es zu einem Timeout kommt.
    Vergleiche danach die Zeiten von den Berichtsabrufen bei einem zweiten Aufruf.

    Führt das zu keiner Klärung solltest Du Dir die Protokolle der Reporting Services angucken

    Gruß Elmar
    Mittwoch, 22. Juli 2009 17:48
    Beantworter
  • Hallo Jens,
    ich kenne das Problem auch, dass sich ein Reporting Server schlafen legt (genauer der IIS) und z. B. das Deployment eines Reports fehlschägt. Nach dem Serverneustart muss der erste wohl in den sauren Apfel beissen. Für den weiteren Lauf, kannst Du z. B. im IIS Einstellungen vornehmen, um die Seiten länger am Leben zu halten. Ich habe auch schon mal von Programmen gelesen, die gescheduled einen Report öffnen, um den Server morgens früh schon mal warmlaufen zu lassen.
    Hier war auch eine Diskussion dazu:
    http://groups.google.de/group/microsoft.public.sqlserver.reportingsvcs/browse_frm/thread/6f37ccc753d7ed7a/dcada0681be23d24?lnk=st&q=reporting+services+first+access&rnum=6&hl=de#dcada0681be23d24

    Meine Doku dazu:
    Problem: Server ist beim ersten Aufruf zu langsam
    Ursache
    Wenn die Seite länger nicht benutzt wurde, legt der IIS diese schlafen

    Abhilfe
    IIS anweisen, diese Seite länger online zu halten
    URL im DNS eintragen lassen und ein ping auf die Adresse rechtzeitig morgens absetzen

    Anleitung IIS
    Öffnen des Internet Information Services (IIS) Manager
    Server-Knoten erweitern, danach den Knoten des Application Pools erweitern
    Evtl. wurde ein eigener Application Pool für die virtuellen Seiten des Reportserver & Reportmanager angelegt, dann diesen nehmen
    Im Standardfall hat der Application Pool für Reportserver den Namen DefaultAppPool
    Kontextmenü des verwendeten Application Pools aufrufen und dort Properties auswählen
    Zwei Einstellungen sind standardmässig gesetzt:
    In der Lasche Recycling gibt es eine Checkbox für Recycle worker processes - dies ist standardmässig auf 1740 Minuten gesetzt (29 Stunden). Das kann man so lassen
    Die andere Einstellung ist in der Lasche Performance - und hier wird es dann interessant ...
    Man beachte die Idle Timeout und erhöhe die Anzahl Minuten auf wenigstens 300 (=5 Stunden) (oder sogar auf 480 für 8 Stunden)


    Einen schönen Tag noch, Christoph Muthmann Microsoft SQL Server MVP, http://www.insidesql.org
    Dienstag, 4. August 2009 11:38
  • Hallo Christoph,
    danke für deinen Artikel. Die Einstellungen werde ich übernehmen. Um den Report auch nach dem Serverneustart erfolgreich zu erstellen hatte ich bereits in der Zwischenzeit ein Programm geschrieben, das nach Neustart ausgeführt wird und von der Funktionalität ähnlich ist wie das Programm, das den Report als PDF erstellt. Somit schlägt der zweite Versuch nicht mehr der erste :-)
    Ich dachte jedoch, dass dieser Workaround aufgelöst werden kann, durch eine etwas profesionellere. Es kann doch nicht sein, dass dies der einzigste Weg ist - oder haben die bei der Entwicklung gepennt?

    Gruß Jens
    Donnerstag, 6. August 2009 18:13
  • Hallo Jens,
    ReportingServices 2008 basiert nicht mehr auf dem IIS und ist deutlich schneller im Start. Solche Timeouts sind mir da noch nicht untergekommen.


    Einen schönen Tag noch, Christoph Muthmann Microsoft SQL Server MVP, http://www.insidesql.org
    Freitag, 7. August 2009 12:09
  • Hallo Jens,

    Schau Dir mal an folgende Artikel. Vielleicht können Sie dir weiter helfen.

    FIX: The Report Designer or the Report Manager stops responding when you try to export a SQL Server 2005 Reporting Services report to a PDF file or a TIFF file

    Festlegen von Timeoutwerten für die Berichtsverarbeitung

    Wenn der Bericht sehr groß ist, und RS2005 ausgeführt kommt dann möglicherweise eine "System.OutOfMemoryException" Fehlermeldung Dank der Speicher. Steht im folgenden KB-Artikel: http://support.microsoft.com/kb/909678

    Microsoft SQL Server Reporting Services - Messen und verbessern der Leistung

    Session Timeout during execution

    Grüße,

    Robert

    Mittwoch, 26. August 2009 10:17
    Moderator
  • Hallo Jens,

    Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.

    Grüße,
    Robert

    Dienstag, 1. September 2009 12:36
    Moderator