2012-06-26 20 views
16

Ho installato un server SQL Reporting (2008 R2), con alcuni report. Ma ho alcuni problemi di prestazioni.Servizi di report SQL: la prima chiamata è molto lenta

La prima chiamata del giorno al server (che va sull'interfaccia del report con l'esempio), è MOLTO lenta (qualcosa come 30-45 secondi al massimo).

La generazione del rapporto è quindi "veloce" (1-2 secondi).

Le prossime chiamate al server sono sempre digiuni fino al giorno successivo. Ho l'impressione che carichi un sacco di cose nella memoria. Ma cosa può richiedere 30-45 secondi per essere caricato in memoria ??? E come caricarlo solo una volta?

Il server è abbastanza buono (quad core, 8 GB di ram, mai vicino alla sua capacità per ora).

Qual è il problema? Come posso risolvere questo?

I rapporti verranno avviati solo 4-5 volte in una settimana, quindi saranno sempre lenti se non riesco a cambiare questo. E dal momento che è disponibile per il cliente, non riesco a farglielo capire (e il rapporto è chiamato attraverso un sito web, quindi rischio di avere un timeout).

La ringrazio molto

+0

Il piano di esecuzione viene espulso se non viene utilizzato per un certo periodo. –

risposta

21

t sembra essere un problema SSRS. Non c'è niente di sbagliato nel tuo rapporto.

È "normale" che SSRS impiega più tempo a caricarsi la prima volta che lo si accede dopo un lungo periodo di inattività. Il problema è causato dal modo in cui funziona SSRS e SSRS riavvia regolarmente il dominio dell'applicazione dopo un determinato periodo di tempo. Dopo il riavvio del dominio dell'applicazione, dopo la prima richiesta all'SSRS è necessario caricare tutte le impostazioni e richiede molto tempo.

This blog spettacolo è un lavoro in giro per la situazione

+1

Attualmente sto provando questa soluzione, domani vedrò se funziona :) – J4N

+0

:) Sono stato davvero contento stamattina, perché ha funzionato! Sai perché SSRS ha bisogno di riavviare regolarmente il dominio dell'applicazione? – J4N

+0

non proprio :(ma almeno conosciamo un lavoro intorno a hahah – Diego

1

La soluzione migliore che potrei fornire è stato quello di emettere un comando 'ricciolo' alla pagina http del report utilizzando tramite comandi di Windows in lotti in un servizio di Windows. Questo ha funzionato la pagina (s) ogni mattina, prima che gli utenti è venuto in

non hanno accesso al codice più (lavoro era qualche tempo fa), ma questa domanda mostra come utilizzare ricciolo:.

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

0

Potrebbe non essere completamente correlato a SQL Server. Prova a vedere se non è il problema di controllo dell'elenco di revoche del segno di codice, vedi Fix slow application startup due to code sign validation

+0

Ho provato a mettere quei due registri, ma non è stato d'aiuto, stamattina ho provato, e lo stesso problema. – J4N

1

Come ha detto Diego, SSRS ha alcuni problemi. La prima chiamata è lenta, per quanto riguarda la configurazione del server. Vi consiglio la seguente configurazione per aggiungere a rsreportserver.config (che si trova se non si sa in C: \ Programmi \ Microsoft SQL Server \ MSRS10.MSSQLSERVER \ Reporting Services \ ReportServer \)

Se si vuole aumentare la memoria massima utilizzata per SSRS: (che significa 7 GB)

<WorkingSetMaximum>7000000</WorkingSetMaximum> 

Se si vuole migliorare la prima chiamata, è possibile impostare (in minuti)

<RecycleTime>4320</RecycleTime> 

realtà SSRS ha un reset (riciclo) tempo in cui pulisce il suo buffer.Di default è settato a 720 min (12h), ecco perché se apri un rapporto ogni mattina, in realtà viene caricato molto lentamente. Come necessario è possibile impostare il tempo di riciclo più alto (2-3 giorni). Non consiglio un tempo più lungo perché il buffer si riempirà e otterrete solo pagine vuote, quindi dovrete riavviare manualmente Reporting Services.

1

Ecco lo script di PowerShell che ho scritto per risolvere il problema. È impostato come attività da eseguire ogni 1:00:

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***") 
Problemi correlati