2010-02-16 6 views
0

J'utilise Reporting Services pour rendre un rapport directement au format PDF. Il nécessite que j'utilise deux références Web: ReportExecution2005.asmx et ReportService2005.asmx. La performance sur les références web semble vraiment médiocre. Comme mon serveur Web (IIS7) et mon serveur SQL Server (2008) sont dans la même boîte, y a-t-il un moyen de les référencer directement? Si ce n'est pas le cas, je peux explicitement les mettre en cache ou quelque chose. La première charge est vraiment très lente, la deuxième charge est parfaitement acceptable.SQL Server Reporting Services: références Web par rapport aux références d'assemblage, performances médiocres

Merci

Répondre

1

Deux choses doivent être faites pour résoudre ce problème:

  1. xml serialization
  2. Change the Reporting service recycle time (valeur environ 20 secondes au premier démarrage du rapport pour moi)
  3. Modifier la piscine demande de temps de recyclage dans IIS (d'une valeur de 5 secondes au premier démarrage du rapport pour moi)

Comme une note de côté sur la sérialisation XML, il y a des cas où l'abo de réglage Cela n'ajoute rien à votre assemblée. Vous pouvez ajouter des classes de proxy Web en ouvrant une ligne de commande dans votre répertoire de projet et entrez wsdl <web service name> /out<proxy class name> par exemple. wsdl http://myworkstn:8080/ReportServer_SQLEXPRESS/ReportExecution2005.asmx /out: ReportExecutionProxy.cs.

Ensuite, ajoutez un événement post build (Explorateur de solutions | Rt Cliquez sur Projet | Propriétés | Evénements de construction (Tab) | Poster -build ligne de commande d'événement (section)) "$(FrameworkSDKDir)Bin\sgen.exe" /force /assembly:"$(TargetPath)" /proxytypes /parsableerrors Le commutateur /proxytypes ajoute que les classes proxy

J'espère que cela vous évite les heures qu'il m'a fallu pour trouver tout cela. :)

1

HTTP est un protocole relativement coûteux - vous prenez toutes ces données html et puis re-encoder sous forme de texte puis en la poussant vers le bas le fil et le décoder. Ajout d'une grande couche de service XML ancienne dans ce cas. Un autre problème concerne votre configuration: si vous effectuez un travail de développement et redémarrez le serveur fréquemment, les performances vont en souffrir lorsque vous kickstarting et recompilation sur la plupart des demandes qui sont des opérations très coûteuses. Je ferais quelques tests de performance sur un système de bout en bout et je verrais si cela fonctionne assez bien.

Il suffit de relire votre question. Si vous rencontrez des problèmes de premier chargement, vérifiez les paramètres du pool d'applications et faites en sorte qu'il ne soit jamais recyclé. Je suppose que votre service de reporting n'est pas souvent touché, le processus est donc arrêté et doit être activé dès qu'il est appelé.

+0

Merci pour la réponse, mais la performance est mauvaise dans la production ainsi que le développement. – Praesagus

+0

Voir la modification. . . –

+0

J'ai regardé la piscine de l'application dans IIS et il recycle toutes les ~ 29 minutes. La première charge de rapport est de 45 secondes environ. Après que c'est moins d'une seconde pour les charges suivantes. Le pool d'applications doit-il être recyclé afin de limiter les erreurs au minimum? (comme redémarrer votre ordinateur). Des suggestions pour résoudre ce problème? Est-il possible de charger ces références lorsque le pool charge ou mieux, les référencer directement? Je ne sais vraiment pas beaucoup à ce sujet, donc je serais reconnaissant pour tous les détails. – Praesagus

Questions connexes