2009-07-24 7 views
1

Je suis en train de mettre en place un service et je continue à obtenir l'erreur suivanteserveur WCF threads occupés simple cœur

Le service HTTP situé à http://localhost/Service1.svc est trop occupé.

Son problème très ennuyeux que je voudrais pouvoir résoudre.

Je ne surcharge pas le système mais j'utilise Threads dans mon programme. Peut-être que je devrais les désactiver? non? J'utilise un ancien ordinateur exécutant Server 2003. Mon ordinateur portable est un processeur double donc je n'y ai pas de problème. Quelqu'un a-t-il une expérience dans ce domaine?

Répondre

0

Comment utilisez-vous les threads. Si vous les utilisez de la mauvaise façon, ils pourraient facilement se mettre à leur place.

La façon naïve d'utiliser les threads est de lancer un nouveau thread à chaque requête avec un nouveau Thread(). Cela va tuer votre performance, et n'aura aucune valeur. Considérez qu'un seul thread peut s'exécuter à la fois sur votre ordinateur monocœur. Même si la plupart sont bloqués, quelque chose de plus que 20 threads va être trop.

0

Je suppose que vous utilisez des threads dans votre application client, et chaque thread appelle le service WCF? Vous risquez d'être confronté à un problème de concurrence maximale par défaut. WCF vous permet de configurer le nombre maximum de connexions, de sessions, d'appels, etc. (dépend de la liaison.) Vérifiez votre configuration de liaison et assurez-vous que vous tenez compte de la concurrence dont vous avez besoin. Par exemple, netTcpBinding possède à la fois un paramètre maxConnections et un paramètre listenBacklog. ListenBacklog vous permet de configurer le nombre maximum de canaux pouvant attendre sur l'écouteur, au-delà de maxConnections, que l'hôte de service autorisera avant de cracher un message du genre "Le service HTTP situé à http://localhost/Service1.svc est trop occupé".

Questions connexes