2012-06-26 106 views
16

He instalado un servidor de SQL Reporting (2008 R2), con algunos informes. Pero tengo algunos problemas de rendimiento.SQL Reporting services: la primera llamada es muy lenta

La primera llamada del día al servidor (yendo a la interfaz del informe por ejemplo), es MUY lenta (algo así como 30-45 segundos en el mejor de los casos).

La generación de informes es "rápida" (1-2 segundos).

Las siguientes llamadas al servidor son siempre ayunas hasta el día siguiente. Tengo la impresión de que carga muchas cosas en la memoria. Pero, ¿qué puede tomar de 30 a 45 segundos para cargarse en la memoria? ¿Y cómo cargarlo solo una vez?

El servidor es lo suficientemente bueno (quad core, 8 GB de RAM, nunca cerca de su capacidad por ahora).

¿Cuál es el problema? Cómo puedo resolver esto ?

Esos informes se lanzarán solo 4-5 veces en una semana, por lo que siempre serán lentos si no puedo cambiar esto. Y dado que está disponible para clientes, simplemente no puedo hacer que entiendan esto (y el informe se llama a través de un sitio web, por lo que me arriesgo a tener tiempo de espera).

Muchas gracias

+0

El plan de ejecución está siendo expulsado si no se utiliza durante un tiempo. –

Respuesta

21

t parece ser un problema de SSRS. No hay nada malo con su informe.

Su característica "normal" es que SSRS tarda más tiempo en cargarse la primera vez que accede a él después de un largo período de inactividad. El problema se debe a la forma en que funciona SSRS y SSRS reinicia regularmente el dominio de la aplicación después de un período de tiempo específico. Después de reiniciar el dominio de la aplicación, luego de la primera solicitud al SSRS necesita cargar todas las configuraciones y lleva bastante tiempo.

This Mostrar blog es un trabajo en torno a la situación

+1

Actualmente estoy probando esta solución, la veré mañana si funciona :) – J4N

+0

:) Estuve muy feliz esta mañana, ¡porque funcionó! ¿Sabes por qué SSRS necesita reiniciar regularmente el dominio de la aplicación? – J4N

+0

no realmente :(pero al menos sabemos un trabajo alrededor de hahah – Diego

1

La mejor solución que se le ocurrió fue emitir un comando de 'giro' a la página http del informe utilizando comandos a través de las ventanas por lotes en un servicio de Windows. Este corrió hasta la página (s) cada mañana antes de que los usuarios se produjo en

No tienen acceso al código más (trabajo fue hace un tiempo), pero esta pregunta muestra cómo utilizar rizo:.

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

0

Puede no estar relacionado con SQL Server. Intente ver si no está el problema de verificación de la lista de revocación del signo de código, consulte Fix slow application startup due to code sign validation

+0

Traté de poner esos dos registros, pero no sirvió, esta mañana probé y tuve el mismo problema. – J4N

1

Como dijo Diego, SSRS tiene algunos problemas. La primera llamada es lenta, con respecto a la configuración de su servidor. Te recomiendo la siguiente configuración para agregar en rsreportserver.config (ubicado si no lo conoces en C: \ Archivos de programa \ Microsoft SQL Server \ MSRS10.MSSQLSERVER \ Reporting Services \ ReportServer \)

Si quieres aumentar el máximo de memoria utilizada por SSRS: (lo que significa 7 GB)

<WorkingSetMaximum>7000000</WorkingSetMaximum> 

Si se quiere mejorar la primera llamada, puede establecer (en minutos)

<RecycleTime>4320</RecycleTime> 

en realidad SSRS tiene un restablecimiento (reciclar) tiempo en que limpia su buffer.Por defecto está configurado a 720 min (12h), por lo que si abre un informe todas las mañanas, realmente carga muy lento. Según lo necesite, puede establecer un tiempo de reciclaje más elevado (2-3 días). No recomiendo un tiempo más alto porque el búfer se llenará y obtendrá solo páginas en blanco, por lo que tendrá que reiniciar manualmente Reporting Services.

1

Aquí está el script de powershell que escribí para solucionar el problema. Se configura como una tarea para ejecutarse cada 1:00 a.m.:

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***") 
Cuestiones relacionadas