Puncte:0

IIS pare să permită maximum un apel simultan la serviciul web WCF pentru fiecare client

drapel cn

Avem o aplicație Windows care apelează metode webservice pentru accesul la baza de date. Am găsit un caz în care efectuăm un apel lung (mai mult de 15 secunde), asincron, la un serviciu WCF pe IIS. Dacă interfața de utilizare efectuează alte apeluri de blocare (este codul vechi) de servicii web în timp ce se întâmplă, acele apeluri suplimentare se blochează până la finalizarea apelului asincron inițial.

Acest lucru nu se întâmplă atunci când interfața de utilizare și serviciile web rulează ambele în Visual Studio cu IIS Express: apelurile de blocare sunt rapide și toate aceste lucruri se termină cu mult înainte ca apelul asincron lung să se termine.

Toate serviciile web au următoarele:

<serviceThrottling 
    maxConcurrentCalls="5000" maxConcurrentSessions="5000" maxConcurrentInstances="5000" />

De asemenea, maxConnections="500" peste tot.

Am dori să facem ca IIS să gestioneze aceste apeluri de servicii web concurente în același mod în care face IIS Express, în același timp.

...

Dacă ajută, totul are sens: facem o căutare a obiectelor. Căutarea returnează primele 50 de articole (în mod implicit) care îndeplinesc criteriile și, în același timp, facem un apel asincron pentru count(*) pentru aceeași interogare. Interogarea de numărare poate dura foarte mult. Utilizatorii insistă că uneori vor să știe care este numărul total, dar de obicei doresc să poată deschide obiecte din lista de rezultate cu mult înainte ca numărul să revină. Deschiderea obiectelor este locul în care intră apelurile sincrone de servicii web. Anterior, rezultatele căutării și numărarea făceau parte din aceeași metodă de servicii web.

Lex Li avatar
drapel vn
Activați urmărirea WCF în ambele cazuri (IIS Express/IIS), https://docs.microsoft.com/en-us/dotnet/framework/wcf/diagnostics/tracing/configuring-tracing și apoi ar trebui să puteți vedea clar ce este gresit.
Ed J. Plunkett avatar
drapel cn
@LexLi Mulțumesc, Lex. Voi face asta.
Ed J. Plunkett avatar
drapel cn
@LexLi Există vreo informație specială acolo care credeți că ar putea fi de ajutor în identificarea cauzei acestei probleme?
Lex Li avatar
drapel vn
Treceți la un dezvoltator al acelei aplicații web și el/ea știe să analizeze. Există mai multe exemple în https://docs.microsoft.com/en-us/dotnet/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application
Ed J. Plunkett avatar
drapel cn
@LexLi „Întrebați pe cineva care știe”? Asta a fost ideea din spatele postării unei întrebări aici, de fapt.
Lex Li avatar
drapel vn
Puteți examina întrebările existente pentru a vedea ce tipuri sunt mai susceptibile de a primi răspuns. Analiza problemelor WCF necesită acces la jurnalul de urmărire și la diferite alte jurnale (oricare dintre ele poate conține informații confidențiale), iar posibilele modele de eroare sunt prea multe pentru a fi rezumate într-un răspuns suficient de scurt. Această natură face ca astfel de întrebări să fie dificil (dacă nu imposibil) să fie discutate pe internet.
Ed J. Plunkett avatar
drapel cn
@lexli Ei bine, aceasta este întrebarea pe care o am.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.