2011-12-20 4 views
1

J'ai une fonctionnalité qui renvoie 60 000 objets. Un objet contient seulement quelques propriétés. Cette fonctionnalité fonctionne en quelques secondes si je l'exécute en mode non-wcf sur ma machine locale. Mais il faut plus de 30 minutes pour exécuter sur le mode WCF dans la machine locale avec la liaison ci-dessous.WCF est très lent

Quelqu'un at-il une idée sur l'amélioration des performances de ce en mode WCF? Merci!

<binding name="ReliableBindingConfig" closeTimeout="00:20:00" receiveTimeout="00:40:00" openTimeout="00:20:00" sendTimeout="00:40:00"> 
     <transactionFlow /> 
     <reliableSession maxRetryCount="12" ordered="true" inactivityTimeout="00:40:00" /> 
     <mtomMessageEncoding maxBufferSize="2147483647" maxReadPoolSize="2147483647" maxWritePoolSize="2147483647"> 
     <readerQuotas maxDepth="32" maxBytesPerRead="4096" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxNameTableCharCount="16384" /> 
     </mtomMessageEncoding> 
     <httpTransport maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" /> 
    </binding> 
+0

Comment allez-vous chercher les objets? Un à la fois, paginé ou tout sérialisé dans une liste? – jgauffin

Répondre

1

Ajustez votre maxBufferSize et votre maxBufferPoolSize pour optimiser les tailles de mémoire tampon.

Trop gros et votre service sera trop occupé en chargeant tous les objets en mémoire. Trop petit et il y aura trop de trafic réseau et le ralentira.

Vous pouvez écrire un faisceau de test simple pour enregistrer le temps nécessaire pour trouver la taille de tampon optimale.