2011-10-24 7 views
2

J'ai une conception selon laquelle nous avons un service WCF qui accède à un magasin de données qui est représenté comme un autre service WCF. L'idée sous-jacente est d'adhérer à la SOA et d'équilibrer la charge par le service et la couche d'accès aux données, tout en permettant au datastore de changer massivement sans impact sur le service initial.Le service WCF appelant un autre service WCF est lent

Problème: ceux-ci s'exécutent sur IIS6 et le chiffrement doit être activé.

Avec les deux services a permis que nous obtenons en moyenne d'environ

Nombre moyen de requêtes par seconde: 4,75469280423686 plus de 400 appels.

Mais si je retire l'appel de service au deuxième service et les remplacer par une référence absolue ce double presque à

Nombre moyen de requêtes par seconde: 8,52248037501811 plus de 400 appels.

Est-ce que quelqu'un a des indices sur comment/comment faire pour optimiser cela?

Je devrais ajouter que ce ne sont pas des appels simultanés.

+0

Avez-vous déjà trouvé une solution? Je vois un problème similaire et il est extrêmement difficile de retrouver la source. –

Répondre

3

Je vous recommande fortement de lire cet article de CodeProject: http://www.codeproject.com/KB/webservices/quickwins.aspx qui est écrit par l'architecte en chef de BT.

+0

Merci, lisez maintenant! Ces appels ne sont toutefois pas simultanés (poste principal mis à jour), mais la limite de 2 appels d'une adresse IP deviendra un goulot d'étranglement pour le service # 2 –

0

Les deux services Web s'exécutent-ils sur le même ordinateur et le même pool d'applications? J'ai déjà eu ce problème auparavant. nous avons finalement complètement coupé cette architecture, mais je crois que cela aurait pu être aidé en les mettant dans différents bassins d'applications. En outre, puisque vous avez mentionné IIS6, .Net peut vous retenir: consultez http://msdn.microsoft.com/en-us/library/ff647787.aspx (Chapitre 6: Amélioration des performances ASP.NET) - en particulier la section "Threading Explained". (IIS6 par défaut n'a pas le nombre approprié de threads .Net pour votre processeur - IIS7 + le fait.)

Bonne chance!

+0

Ils fonctionnent beaucoup dans le même pool d'applications .. Je vais essayer. à ce moment-là, le filetage n'est même pas entré dans tous mes tests sont 400 consécutifs nécessite où il y a un mappage 1: 1 des demandes à S1-> S2 –

+0

Intéressant, il semble qu'il y ait un décalage dans chaque connexion à IIS, même de en lui-même. Avez-vous un comportement de service qui prend un certain temps, comme l'authentification dans un en-tête SOAP? –

Questions connexes