it-swarm.com.de

SQL Reporting Services: Der erste Aufruf ist sehr langsam

Ich habe einen SQL-Berichterstellungsserver (2008 R2) mit einigen Berichten installiert. Aber ich habe einige Aufführungsprobleme.

Der erste Aufruf des Tages an den Server (beispielsweise durch die Berichtsschnittstelle) ist SEHR langsam (im besten Fall etwa 30-45 Sekunden).

Die Berichterstellung ist dann "schnell" (1-2 Sekunden).

Die nächsten Aufrufe an den Server erfolgen immer bis zum nächsten Tag. Ich habe den Eindruck, dass es sehr viel in den Speicher lädt. Was dauert aber 30-45 Sekunden, um in den Speicher geladen zu werden ??? Und wie man es nur einmal lädt?

Der Server ist gut genug (Quad-Core, 8 GB RAM, im Moment nicht in der Nähe seiner Kapazität).

Worin besteht das Problem? Wie kann ich das beheben?

Diese Berichte werden nur 4-5 Mal in einer Woche gestartet. Sie werden also immer langsam sein, wenn ich das nicht ändern kann. Und da es für Kunden verfügbar ist, kann ich sie einfach nicht verstehen lassen (und der Bericht wird über eine Website abgerufen, daher riskiere ich Zeitüberschreitungen).

Vielen Dank

18
J4N

Es scheint ein SSRS-Problem zu sein. Mit Ihrem Bericht stimmt nichts.

Es ist "normal", dass SSRS länger braucht, wenn Sie nach einer langen Zeit der Inaktivität zum ersten Mal darauf zugreifen. Das Problem wird durch die Funktionsweise von SSRS und den regelmäßigen Neustart der Anwendungsdomäne nach einem bestimmten Zeitraum verursacht. Nach dem Neustart der Anwendungsdomäne müssen bei der ersten Anforderung an das SSRS alle Einstellungen geladen werden, was ziemlich lange dauert.

Diese Blog-Show ist ein Workaround für die Situation

22
Diego

Hier ist das Powershell-Skript, das ich geschrieben habe, um das Problem zu beheben. Es ist als eine Aufgabe eingerichtet, die alle 1:00 Uhr ausgeführt wird:

Stop-Service "SQL Server Reporting Services (MSSQLSERVER)"
Start-Service "SQL Server Reporting Services (MSSQLSERVER)"
$wc = New-Object system.net.webClient
$cred = [System.Net.CredentialCache]::DefaultNetworkCredentials
$wc.Credentials = $cred
$src = $wc.DownloadString("http://localhost/Reports/Pages/Report.aspx?ItemPath=***NAME OF HOME PAGE***")
2
SChalice

Die beste Lösung, die ich finden konnte, war, einen Befehl "curl" an die http-Seite des Berichts zu senden, der den Befehl "Windows Batch" in einem Windows-Dienst verwendet. Dies führte jeden Morgen zu den Seiten, bevor die Benutzer hereinkamen.

Ich habe keinen Zugriff mehr auf den Code (Job war vor einiger Zeit), aber diese Frage zeigt, wie man curl benutzt:

http://blogs.plexibus.com/2009/01/15/rest-esting-with-curl/

1
Preet Sangha

Wie Diego sagte, hat SSRS einige Probleme. Der erste Aufruf ist langsam, was Ihre Serverkonfiguration angeht. Ich empfehle Ihnen die folgende Konfiguration zum Hinzufügen von "rsreportserver.config" (wenn Sie dies nicht wissen unter C:\Programme\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer \)

Wenn Sie den von SSRS verwendeten maximalen Speicher erhöhen möchten: (dh 7 GB)

<WorkingSetMaximum>7000000</WorkingSetMaximum>

Wenn Sie den ersten Anruf verbessern möchten, können Sie (in Minuten)

<RecycleTime>4320</RecycleTime>

Tatsächlich hat SSRS eine Reset-Zeit (Recyclingzeit), in der der Puffer gereinigt wird. Standardmäßig ist der Wert auf 720 Minuten (12 Stunden) festgelegt. Wenn Sie also jeden Morgen einen Bericht öffnen, wird er tatsächlich sehr langsam geladen. Wenn Sie möchten, können Sie die Wiederverwendungszeit (2-3 Tage) höher einstellen. Ich empfehle keine höhere Zeit, da der Puffer voll wird und Sie nur leere Seiten erhalten, sodass Sie Reporting Services manuell neu starten müssen.

1
Mihai

Ich habe die Hauptabfrage und die Dropdown-Steuerelemente auf der Seite so konvertiert, dass sie aus gespeicherten Prozeduren geladen wurden. Der Ladevorgang machte etwa 5 Sekunden aus.

0
Arif Imtiaz

Es kann völlig unabhängig von SQL Server sein. Prüfen Sie, ob es sich nicht um ein Problem mit der Überprüfung der Sperrung der Codesignatur handelt. Weitere Informationen finden Sie unter Langsames Starten der Anwendung aufgrund der Überprüfung der Codesignatur .

0
Remus Rusanu