[.NET/IIS] Threading en applicationpool

Pagina: 1
Acties:

  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
Hallo,

Ik ben op dit moment een applicatie aan het debuggen, die door een ander bedrijf geschreven is.

Ik zal een korte omschrijving geven hoe de applicatie in elkaar zit (not my design)

1e laag: applicatie server communiceert die een api beschikbaar stelt om naar te communiceren.
2e laag: webservices boven op een laag die met de api van laag 1 communiceert. via de webservices worden de methoden exposed die aangesproken mogen worden,
3e laag: een (web)user interface die via deze webservices de 1e laag aanspreekt.

ik ben vooral verantwoordelijk voor deze 2e laag.

Deze webservices roepen methoden aan in verschillende klassen, deze methoden roepen op hun beurt weer de laag aan die met de api van laag 1 communiceert. Deze 2e laag draait op een IIS machine in een applicationpool (win2003)

Nu kan er een methode aangeroepen worden die nogal lang kan duren en de programmeurs hebben in deze methode een thread.sleep(500) staan (en nog op andere plekken in de appicatie) terwijl de applicatie niet multi threaded is

Mijn vraag is nu:

als er meerdere users op het systeem zitten (in de zelfde applicatie pool) en er word een thread.sleep aangeroepen moet dan heel het systeem (binnen die applicatiepool) op die sleep wachten? of heeft iedere user een thread? (bijvoorbeeld voor iedere initialisatie van het object dat met de api communiceert)

Hoe werkt dit intern?

Ik hoop dat jullie me wat verder kunnen helpen!

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 01-05 19:09

pjvandesande

GC.Collect(head);

Het is alleen de huidige Thread die dan slaapt. Dus niet het hele systeem wacht hier op.

Of elke user een Thread heeft kan ik je niet vertellen. Ik denk het niet, want anders heb je met 500 users 500 Threads en dat is geen feestje.
Daarom maken ze gebruik van een pool met een maximum aantal Threads.

  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
is een workerproces in IIS gelijk aan een thread (of heeft een workerproces 1 thread?)

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 01-05 19:09

pjvandesande

GC.Collect(head);

Nee, daar ga ik niet vanuit. Ik moet zeggen dat ik het niet met zekerheid kan zeggen, maar intern zullen er vast mee Threads worden gecreeerd.

Alle connecties zijn vaak al multithreaded, zeker in IIS lijkt mij omdat er veel connecties tegelijkertijd kunnen zijn.
Hiervoor wordt vaak een Thread pool gebruikt waarmee een maximum aantal Thread kan worden ingesteld.