vb.net wcf performance crystal-reports crystal-reports-xi

vb.net - Crystal Reports: bajo rendimiento en ReportDocument.Load



wcf performance (2)

Estamos teniendo algunos problemas de rendimiento con nuestra aplicación donde Crystal Reports (XI) está alojado en un servicio WCF. Con la ayuda de un analizador de rendimiento pudimos descubrir que la llamada a ReportDocument.Load lleva más de 10 segundos. Si profundizamos, el punto más problemático es en ReportClientDocumentClass.Open-method, que está tomando los 10 segundos completos.

Estamos llamando al método Load así:

dim doc As ReportDocument = New CrystalDecisions.CrystalReports.Engine.ReportDocument doc.Load("filename")

El archivo de informe está alojado en el mismo servidor que el servicio.

El "seguimiento de pila" para ReportDocument.Load tiene este aspecto:

ReportDocument.Load ReportClientDocumentWrapper.EnsureDocumentIsOpened ReportClientDocumentWrapper.Open ReportClientDocumentClass.Open

Y como mencioné anteriormente, la llamada a ReportClientDocumentClass.Open es la que "cuelga". ¿Alguna idea que pueda causar esto?


Me he dado cuenta en un servicio de WCF estoy perfilando que la llamada de Client > WCF > Service tiene las siguientes características de rendimiento:

  1. primera llamada al servicio por una nueva instancia del cliente:
    1. después de no ejecutar el cliente durante 1-2 minutos: ~ 12-15 segundos;
    2. después de cerrar una instancia previa del cliente: ~ 1.1 segundos;
    3. después de reiniciar Windows: ~ 21 segundos;
  2. llamadas subsiguientes al servicio por una instancia existente del cliente: ~ 0.1 segundos

ejecutando Windows 2003 Server SP2 con 512 MB de RAM.

No estoy seguro de qué dentro de WCF está desencadenando esta variación de rendimiento.


El problema original fue identificado a las impresoras. La llamada al método abierto intenta conectarse a la impresora que se utilizó cuando se diseñó el informe. Cuando se implementó el informe, la impresora ya no estaba disponible pero Crystal tardó unos 15 segundos en darse cuenta.

Abrir el informe y configurarlo para que no use ninguna impresora solucionó este problema particular de rendimiento.