473,419 Members | 2,005 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,419 software developers and data experts.

Multiple worker processes for a single application in a applicationpool

Hello All,

In IIS 6.0 We have a concept of worker processes and application pools.

As I understand it, we can have multiple worker process per appliction
pool. Each worker process is dedicated to a pool. If I assign only one
application to a applicaton pool and have multiple worker processes
assigned to that pool. Will my application be processed by many worker
processes?

Why I am asking this question is because there are certain resources
which are in-memory and are shared at an application level. For example
the database connection pool, or some XML files initialized via a static
contructor.

Now if multiple process are executing my requests, then how do they
share data (if they do at all). Or each process replicates its own
resources.

This is important to me, because lets say I am connection to a
datasource for which I have a 20 concurrent user license. So I create a
pool of 20 connections and manage it. This pool is in-memory initialized
via a static constructor. Now if each worker process tries to load its
own in-memory pool, then only one process would function because rest
will be denied the connection. I also have no way of knowing how many
worker process will run at any moment because they are run based on
demand by the IIS so I cannot split the load amongst multiple processes
at an application level.

To me it appears that different worker processes cannot be used to
execute the requests for one application ... but then MS documentation
talks about Web Garden where different worker processes execute requests
for an application domain.

I will be very gratefull if you could share some knowledge on this
matter. Thanks for your help in advance.

regards,
Abhishek.
Nov 18 '05 #1
9 23048
Each worker process keeps its own in-memory state. You would need some kind
of out-of-process state management if you want to share data between
processes.

Additionally, I would suggest that you are best of managing database
connections via built-in MDAC connection pooling, not through your own
home-grown system. You can limit the number of connections in the pool.

Cheers
Ken

"Abhishek Srivastava" <ab*****************@nospam.net> wrote in message
news:OE**************@TK2MSFTNGP11.phx.gbl...
: Hello All,
:
: In IIS 6.0 We have a concept of worker processes and application pools.
:
: As I understand it, we can have multiple worker process per appliction
: pool. Each worker process is dedicated to a pool. If I assign only one
: application to a applicaton pool and have multiple worker processes
: assigned to that pool. Will my application be processed by many worker
: processes?
:
: Why I am asking this question is because there are certain resources
: which are in-memory and are shared at an application level. For example
: the database connection pool, or some XML files initialized via a static
: contructor.
:
: Now if multiple process are executing my requests, then how do they
: share data (if they do at all). Or each process replicates its own
: resources.
:
: This is important to me, because lets say I am connection to a
: datasource for which I have a 20 concurrent user license. So I create a
: pool of 20 connections and manage it. This pool is in-memory initialized
: via a static constructor. Now if each worker process tries to load its
: own in-memory pool, then only one process would function because rest
: will be denied the connection. I also have no way of knowing how many
: worker process will run at any moment because they are run based on
: demand by the IIS so I cannot split the load amongst multiple processes
: at an application level.
:
: To me it appears that different worker processes cannot be used to
: execute the requests for one application ... but then MS documentation
: talks about Web Garden where different worker processes execute requests
: for an application domain.
:
: I will be very gratefull if you could share some knowledge on this
: matter. Thanks for your help in advance.
:
: regards,
: Abhishek.
Nov 18 '05 #2
How do the workers synchronize the data? suppose I keep a DOM tree in
the application object.

Now one worker process updates a node in the dom tree. Will other worker
processes (who have thier own version of the in-memory state) see the
changes? What is the mechanism of synchronization.

One question about MDAC. Is MDAC an out-of-process thing? AFAIK, it is a
set of DLLs which run in the memory of the application.(Used MDAC many
times... but never saw a separate exe or DLLHOST begining to run upon
querying my DB) Even if I let the MDAC manage my pool, if multiple
processes are creating their own pools, then what is the total number of
connections beging opened to the database? If I have a limitation on the
max number of connections, then how do I manage it?

Can you please confirm that multiple processes can definetly run execute
the requests for a single application.

regards,
Abhishek.

Ken Schaefer wrote:
Each worker process keeps its own in-memory state. You would need some kind
of out-of-process state management if you want to share data between
processes.

Additionally, I would suggest that you are best of managing database
connections via built-in MDAC connection pooling, not through your own
home-grown system. You can limit the number of connections in the pool.

Cheers
Ken

"Abhishek Srivastava" <ab*****************@nospam.net> wrote in message
news:OE**************@TK2MSFTNGP11.phx.gbl...
: Hello All,
:
: In IIS 6.0 We have a concept of worker processes and application pools.
:
: As I understand it, we can have multiple worker process per appliction
: pool. Each worker process is dedicated to a pool. If I assign only one
: application to a applicaton pool and have multiple worker processes
: assigned to that pool. Will my application be processed by many worker
: processes?
:
: Why I am asking this question is because there are certain resources
: which are in-memory and are shared at an application level. For example
: the database connection pool, or some XML files initialized via a static
: contructor.
:
: Now if multiple process are executing my requests, then how do they
: share data (if they do at all). Or each process replicates its own
: resources.
:
: This is important to me, because lets say I am connection to a
: datasource for which I have a 20 concurrent user license. So I create a
: pool of 20 connections and manage it. This pool is in-memory initialized
: via a static constructor. Now if each worker process tries to load its
: own in-memory pool, then only one process would function because rest
: will be denied the connection. I also have no way of knowing how many
: worker process will run at any moment because they are run based on
: demand by the IIS so I cannot split the load amongst multiple processes
: at an application level.
:
: To me it appears that different worker processes cannot be used to
: execute the requests for one application ... but then MS documentation
: talks about Web Garden where different worker processes execute requests
: for an application domain.
:
: I will be very gratefull if you could share some knowledge on this
: matter. Thanks for your help in advance.
:
: regards,
: Abhishek.

Nov 18 '05 #3
The fact that MDAC does not have it's process does not mean that it can't
share connection pools across different applications. I don't know how you
came to that conclusion.

Jerry

"Abhishek Srivastava" <ab*****************@nospam.net> wrote in message
news:u2**************@TK2MSFTNGP12.phx.gbl...
How do the workers synchronize the data? suppose I keep a DOM tree in
the application object.

Now one worker process updates a node in the dom tree. Will other worker
processes (who have thier own version of the in-memory state) see the
changes? What is the mechanism of synchronization.

One question about MDAC. Is MDAC an out-of-process thing? AFAIK, it is a
set of DLLs which run in the memory of the application.(Used MDAC many
times... but never saw a separate exe or DLLHOST begining to run upon
querying my DB) Even if I let the MDAC manage my pool, if multiple
processes are creating their own pools, then what is the total number of
connections beging opened to the database? If I have a limitation on the
max number of connections, then how do I manage it?

Can you please confirm that multiple processes can definetly run execute
the requests for a single application.

regards,
Abhishek.

Ken Schaefer wrote:
Each worker process keeps its own in-memory state. You would need some kind of out-of-process state management if you want to share data between
processes.

Additionally, I would suggest that you are best of managing database
connections via built-in MDAC connection pooling, not through your own
home-grown system. You can limit the number of connections in the pool.

Cheers
Ken

"Abhishek Srivastava" <ab*****************@nospam.net> wrote in message
news:OE**************@TK2MSFTNGP11.phx.gbl...
: Hello All,
:
: In IIS 6.0 We have a concept of worker processes and application pools. :
: As I understand it, we can have multiple worker process per appliction
: pool. Each worker process is dedicated to a pool. If I assign only one
: application to a applicaton pool and have multiple worker processes
: assigned to that pool. Will my application be processed by many worker
: processes?
:
: Why I am asking this question is because there are certain resources
: which are in-memory and are shared at an application level. For example : the database connection pool, or some XML files initialized via a static : contructor.
:
: Now if multiple process are executing my requests, then how do they
: share data (if they do at all). Or each process replicates its own
: resources.
:
: This is important to me, because lets say I am connection to a
: datasource for which I have a 20 concurrent user license. So I create a : pool of 20 connections and manage it. This pool is in-memory initialized : via a static constructor. Now if each worker process tries to load its
: own in-memory pool, then only one process would function because rest
: will be denied the connection. I also have no way of knowing how many
: worker process will run at any moment because they are run based on
: demand by the IIS so I cannot split the load amongst multiple processes : at an application level.
:
: To me it appears that different worker processes cannot be used to
: execute the requests for one application ... but then MS documentation
: talks about Web Garden where different worker processes execute requests : for an application domain.
:
: I will be very gratefull if you could share some knowledge on this
: matter. Thanks for your help in advance.
:
: regards,
: Abhishek.

Nov 18 '05 #4
Jerry: To share a connection from an exisitng pool you need to be in
the same process, have the same security context, and use the exact
same connection string as the pool. In .NET you also need to be in the
same app domain which can further subdivide a process.

--
Scott
http://www.OdeToCode.com

On Fri, 30 Jan 2004 10:26:12 -0800, "Jerry III" <je******@hotmail.com>
wrote:
The fact that MDAC does not have it's process does not mean that it can't
share connection pools across different applications. I don't know how you
came to that conclusion.

Jerry

"Abhishek Srivastava" <ab*****************@nospam.net> wrote in message
news:u2**************@TK2MSFTNGP12.phx.gbl...
How do the workers synchronize the data? suppose I keep a DOM tree in
the application object.

Now one worker process updates a node in the dom tree. Will other worker
processes (who have thier own version of the in-memory state) see the
changes? What is the mechanism of synchronization.

One question about MDAC. Is MDAC an out-of-process thing? AFAIK, it is a
set of DLLs which run in the memory of the application.(Used MDAC many
times... but never saw a separate exe or DLLHOST begining to run upon
querying my DB) Even if I let the MDAC manage my pool, if multiple
processes are creating their own pools, then what is the total number of
connections beging opened to the database? If I have a limitation on the
max number of connections, then how do I manage it?

Can you please confirm that multiple processes can definetly run execute
the requests for a single application.

regards,
Abhishek.

Ken Schaefer wrote:
> Each worker process keeps its own in-memory state. You would need somekind > of out-of-process state management if you want to share data between
> processes.
>
> Additionally, I would suggest that you are best of managing database
> connections via built-in MDAC connection pooling, not through your own
> home-grown system. You can limit the number of connections in the pool.
>
> Cheers
> Ken
>
> "Abhishek Srivastava" <ab*****************@nospam.net> wrote in message
> news:OE**************@TK2MSFTNGP11.phx.gbl...
> : Hello All,
> :
> : In IIS 6.0 We have a concept of worker processes and applicationpools. > :
> : As I understand it, we can have multiple worker process per appliction
> : pool. Each worker process is dedicated to a pool. If I assign only one
> : application to a applicaton pool and have multiple worker processes
> : assigned to that pool. Will my application be processed by many worker
> : processes?
> :
> : Why I am asking this question is because there are certain resources
> : which are in-memory and are shared at an application level. Forexample > : the database connection pool, or some XML files initialized via astatic > : contructor.
> :
> : Now if multiple process are executing my requests, then how do they
> : share data (if they do at all). Or each process replicates its own
> : resources.
> :
> : This is important to me, because lets say I am connection to a
> : datasource for which I have a 20 concurrent user license. So I createa > : pool of 20 connections and manage it. This pool is in-memoryinitialized > : via a static constructor. Now if each worker process tries to load its
> : own in-memory pool, then only one process would function because rest
> : will be denied the connection. I also have no way of knowing how many
> : worker process will run at any moment because they are run based on
> : demand by the IIS so I cannot split the load amongst multipleprocesses > : at an application level.
> :
> : To me it appears that different worker processes cannot be used to
> : execute the requests for one application ... but then MS documentation
> : talks about Web Garden where different worker processes executerequests > : for an application domain.
> :
> : I will be very gratefull if you could share some knowledge on this
> : matter. Thanks for your help in advance.
> :
> : regards,
> : Abhishek.
>
>


Nov 18 '05 #5
You're kidding, right? What good is connection pooling if it can't be shared
across multiple instances of the same code? How exactly are we supposed to
tune the connection pool size if we (as developers) have no idea how many
connection pools are there going to be since some customers will setup their
web site to run in multiple processes?

Jerry

"Scott Allen" <bitmask@[nospam].fred.net> wrote in message
news:v5********************************@4ax.com...
Jerry: To share a connection from an exisitng pool you need to be in
the same process, have the same security context, and use the exact
same connection string as the pool. In .NET you also need to be in the
same app domain which can further subdivide a process.

--
Scott
http://www.OdeToCode.com

On Fri, 30 Jan 2004 10:26:12 -0800, "Jerry III" <je******@hotmail.com>
wrote:
The fact that MDAC does not have it's process does not mean that it can't
share connection pools across different applications. I don't know how youcame to that conclusion.

Jerry

"Abhishek Srivastava" <ab*****************@nospam.net> wrote in message
news:u2**************@TK2MSFTNGP12.phx.gbl...
How do the workers synchronize the data? suppose I keep a DOM tree in
the application object.

Now one worker process updates a node in the dom tree. Will other worker processes (who have thier own version of the in-memory state) see the
changes? What is the mechanism of synchronization.

One question about MDAC. Is MDAC an out-of-process thing? AFAIK, it is a set of DLLs which run in the memory of the application.(Used MDAC many
times... but never saw a separate exe or DLLHOST begining to run upon
querying my DB) Even if I let the MDAC manage my pool, if multiple
processes are creating their own pools, then what is the total number of connections beging opened to the database? If I have a limitation on the max number of connections, then how do I manage it?

Can you please confirm that multiple processes can definetly run execute the requests for a single application.

regards,
Abhishek.

Ken Schaefer wrote:
> Each worker process keeps its own in-memory state. You would need some
kind
> of out-of-process state management if you want to share data between
> processes.
>
> Additionally, I would suggest that you are best of managing database
> connections via built-in MDAC connection pooling, not through your
own > home-grown system. You can limit the number of connections in the pool. >
> Cheers
> Ken
>
> "Abhishek Srivastava" <ab*****************@nospam.net> wrote in message > news:OE**************@TK2MSFTNGP11.phx.gbl...
> : Hello All,
> :
> : In IIS 6.0 We have a concept of worker processes and application

pools.
> :
> : As I understand it, we can have multiple worker process per appliction > : pool. Each worker process is dedicated to a pool. If I assign only one > : application to a applicaton pool and have multiple worker processes
> : assigned to that pool. Will my application be processed by many worker > : processes?
> :
> : Why I am asking this question is because there are certain resources > : which are in-memory and are shared at an application level. For

example
> : the database connection pool, or some XML files initialized via a

static
> : contructor.
> :
> : Now if multiple process are executing my requests, then how do they
> : share data (if they do at all). Or each process replicates its own
> : resources.
> :
> : This is important to me, because lets say I am connection to a
> : datasource for which I have a 20 concurrent user license. So I createa
> : pool of 20 connections and manage it. This pool is in-memory

initialized
> : via a static constructor. Now if each worker process tries to load

its > : own in-memory pool, then only one process would function because rest > : will be denied the connection. I also have no way of knowing how many > : worker process will run at any moment because they are run based on
> : demand by the IIS so I cannot split the load amongst multiple

processes
> : at an application level.
> :
> : To me it appears that different worker processes cannot be used to
> : execute the requests for one application ... but then MS documentation > : talks about Web Garden where different worker processes execute

requests
> : for an application domain.
> :
> : I will be very gratefull if you could share some knowledge on this
> : matter. Thanks for your help in advance.
> :
> : regards,
> : Abhishek.
>
>

Nov 18 '05 #6
Well, I guess it boils down to this:

It's close to impossible to write a web app without connection
pooling. The overhead of seting up, handshaking, authenticating,
tearing down, etc., is a big hit on perf and scalability.

I could write my own pooling algorithm, but some smart people already
worked on the problem for me and did a tremendous amount of testing.
The pooling in most managed providers is already effecient, secure,
and well behaved.

The built in pooling won't "waste" connections. That is, it wont open
more than it needs at any one moment (unless you've given it a minimum
number to use), and with most of the providers you can set a min and
max pool size. If the pool reaches the max size, additional requests
queue up and wait for a connection to become free.

Now, I realize this doesn't help someone control the *total* number of
connections from thier code in cases where a data access layer appears
in more > 1 processes on a server, but, it is suprising how many
"active" users a .NET app can support when the application is using
then returning a connection to the pool as quickly as possible. With n
connections in a pool an app can service the requests of n or more
users, generally a 'lot' more than n, but again it depends on the
application. You just have to test and benchmark and test again.

If I was in a scenario where I needed to have total control over the
number of connections on a machine, I'd write a ServicedComponent for
data access and host it in a COM+ server package. Of course this would
require marshalling of DataSets across processes, which can be a hit.
I'd think this type of scenario is an exceptional case, but I'm sure
it exists somewhere.

--
Scott
http://www.OdeToCode.com
On Fri, 30 Jan 2004 14:30:35 -0800, "Jerry III" <je******@hotmail.com>
wrote:
You're kidding, right? What good is connection pooling if it can't be shared
across multiple instances of the same code? How exactly are we supposed to
tune the connection pool size if we (as developers) have no idea how many
connection pools are there going to be since some customers will setup their
web site to run in multiple processes?

Jerry

"Scott Allen" <bitmask@[nospam].fred.net> wrote in message
news:v5********************************@4ax.com.. .
Jerry: To share a connection from an exisitng pool you need to be in
the same process, have the same security context, and use the exact
same connection string as the pool. In .NET you also need to be in the
same app domain which can further subdivide a process.

--
Scott
http://www.OdeToCode.com

On Fri, 30 Jan 2004 10:26:12 -0800, "Jerry III" <je******@hotmail.com>
wrote:
>The fact that MDAC does not have it's process does not mean that it can't
>share connection pools across different applications. I don't know howyou >came to that conclusion.
>
>Jerry
>
>"Abhishek Srivastava" <ab*****************@nospam.net> wrote in message
>news:u2**************@TK2MSFTNGP12.phx.gbl...
>> How do the workers synchronize the data? suppose I keep a DOM tree in
>> the application object.
>>
>> Now one worker process updates a node in the dom tree. Will otherworker >> processes (who have thier own version of the in-memory state) see the
>> changes? What is the mechanism of synchronization.
>>
>> One question about MDAC. Is MDAC an out-of-process thing? AFAIK, it isa >> set of DLLs which run in the memory of the application.(Used MDAC many
>> times... but never saw a separate exe or DLLHOST begining to run upon
>> querying my DB) Even if I let the MDAC manage my pool, if multiple
>> processes are creating their own pools, then what is the total numberof >> connections beging opened to the database? If I have a limitation onthe >> max number of connections, then how do I manage it?
>>
>> Can you please confirm that multiple processes can definetly runexecute >> the requests for a single application.
>>
>> regards,
>> Abhishek.
>>
>> Ken Schaefer wrote:
>> > Each worker process keeps its own in-memory state. You would needsome >kind
>> > of out-of-process state management if you want to share data between
>> > processes.
>> >
>> > Additionally, I would suggest that you are best of managing database
>> > connections via built-in MDAC connection pooling, not through yourown >> > home-grown system. You can limit the number of connections in thepool. >> >
>> > Cheers
>> > Ken
>> >
>> > "Abhishek Srivastava" <ab*****************@nospam.net> wrote inmessage >> > news:OE**************@TK2MSFTNGP11.phx.gbl...
>> > : Hello All,
>> > :
>> > : In IIS 6.0 We have a concept of worker processes and application
>pools.
>> > :
>> > : As I understand it, we can have multiple worker process perappliction >> > : pool. Each worker process is dedicated to a pool. If I assign onlyone >> > : application to a applicaton pool and have multiple worker processes
>> > : assigned to that pool. Will my application be processed by manyworker >> > : processes?
>> > :
>> > : Why I am asking this question is because there are certainresources >> > : which are in-memory and are shared at an application level. For
>example
>> > : the database connection pool, or some XML files initialized via a
>static
>> > : contructor.
>> > :
>> > : Now if multiple process are executing my requests, then how do they
>> > : share data (if they do at all). Or each process replicates its own
>> > : resources.
>> > :
>> > : This is important to me, because lets say I am connection to a
>> > : datasource for which I have a 20 concurrent user license. So Icreate >a
>> > : pool of 20 connections and manage it. This pool is in-memory
>initialized
>> > : via a static constructor. Now if each worker process tries to loadits >> > : own in-memory pool, then only one process would function becauserest >> > : will be denied the connection. I also have no way of knowing howmany >> > : worker process will run at any moment because they are run based on
>> > : demand by the IIS so I cannot split the load amongst multiple
>processes
>> > : at an application level.
>> > :
>> > : To me it appears that different worker processes cannot be used to
>> > : execute the requests for one application ... but then MSdocumentation >> > : talks about Web Garden where different worker processes execute
>requests
>> > : for an application domain.
>> > :
>> > : I will be very gratefull if you could share some knowledge on this
>> > : matter. Thanks for your help in advance.
>> > :
>> > : regards,
>> > : Abhishek.
>> >
>> >
>


Nov 18 '05 #7
A given worker process can have multiple threads servicing requests. These
will all share the same connection pool. I don't understand how two
arbitrary w3wp.exe processes would share the same connection pool however.

If you're writing an application that requires multiple w3wp.exe (web
garden), then you probably already have a internet connector-type licence
for SQL Server (rather than 10 CALs or similar). The connection pooling
provided by the MDAC components is quite good IMHO.

Cheers
Ken
"Jerry III" <je******@hotmail.com> wrote in message
news:%2****************@tk2msftngp13.phx.gbl...
: You're kidding, right? What good is connection pooling if it can't be
shared
: across multiple instances of the same code? How exactly are we supposed to
: tune the connection pool size if we (as developers) have no idea how many
: connection pools are there going to be since some customers will setup
their
: web site to run in multiple processes?
:
: Jerry
:
: "Scott Allen" <bitmask@[nospam].fred.net> wrote in message
: news:v5********************************@4ax.com...
: > Jerry: To share a connection from an exisitng pool you need to be in
: > the same process, have the same security context, and use the exact
: > same connection string as the pool. In .NET you also need to be in the
: > same app domain which can further subdivide a process.
: >
: > --
: > Scott
: > http://www.OdeToCode.com
: >
: > On Fri, 30 Jan 2004 10:26:12 -0800, "Jerry III" <je******@hotmail.com>
: > wrote:
: >
: > >The fact that MDAC does not have it's process does not mean that it
can't
: > >share connection pools across different applications. I don't know how
: you
: > >came to that conclusion.
: > >
: > >Jerry
: > >
: > >"Abhishek Srivastava" <ab*****************@nospam.net> wrote in message
: > >news:u2**************@TK2MSFTNGP12.phx.gbl...
: > >> How do the workers synchronize the data? suppose I keep a DOM tree in
: > >> the application object.
: > >>
: > >> Now one worker process updates a node in the dom tree. Will other
: worker
: > >> processes (who have thier own version of the in-memory state) see the
: > >> changes? What is the mechanism of synchronization.
: > >>
: > >> One question about MDAC. Is MDAC an out-of-process thing? AFAIK, it
is
: a
: > >> set of DLLs which run in the memory of the application.(Used MDAC
many
: > >> times... but never saw a separate exe or DLLHOST begining to run upon
: > >> querying my DB) Even if I let the MDAC manage my pool, if multiple
: > >> processes are creating their own pools, then what is the total number
: of
: > >> connections beging opened to the database? If I have a limitation on
: the
: > >> max number of connections, then how do I manage it?
: > >>
: > >> Can you please confirm that multiple processes can definetly run
: execute
: > >> the requests for a single application.
: > >>
: > >> regards,
: > >> Abhishek.
: > >>
: > >> Ken Schaefer wrote:
: > >> > Each worker process keeps its own in-memory state. You would need
: some
: > >kind
: > >> > of out-of-process state management if you want to share data
between
: > >> > processes.
: > >> >
: > >> > Additionally, I would suggest that you are best of managing
database
: > >> > connections via built-in MDAC connection pooling, not through your
: own
: > >> > home-grown system. You can limit the number of connections in the
: pool.
: > >> >
: > >> > Cheers
: > >> > Ken
: > >> >
: > >> > "Abhishek Srivastava" <ab*****************@nospam.net> wrote in
: message
: > >> > news:OE**************@TK2MSFTNGP11.phx.gbl...
: > >> > : Hello All,
: > >> > :
: > >> > : In IIS 6.0 We have a concept of worker processes and application
: > >pools.
: > >> > :
: > >> > : As I understand it, we can have multiple worker process per
: appliction
: > >> > : pool. Each worker process is dedicated to a pool. If I assign
only
: one
: > >> > : application to a applicaton pool and have multiple worker
processes
: > >> > : assigned to that pool. Will my application be processed by many
: worker
: > >> > : processes?
: > >> > :
: > >> > : Why I am asking this question is because there are certain
: resources
: > >> > : which are in-memory and are shared at an application level. For
: > >example
: > >> > : the database connection pool, or some XML files initialized via a
: > >static
: > >> > : contructor.
: > >> > :
: > >> > : Now if multiple process are executing my requests, then how do
they
: > >> > : share data (if they do at all). Or each process replicates its
own
: > >> > : resources.
: > >> > :
: > >> > : This is important to me, because lets say I am connection to a
: > >> > : datasource for which I have a 20 concurrent user license. So I
: create
: > >a
: > >> > : pool of 20 connections and manage it. This pool is in-memory
: > >initialized
: > >> > : via a static constructor. Now if each worker process tries to
load
: its
: > >> > : own in-memory pool, then only one process would function because
: rest
: > >> > : will be denied the connection. I also have no way of knowing how
: many
: > >> > : worker process will run at any moment because they are run based
on
: > >> > : demand by the IIS so I cannot split the load amongst multiple
: > >processes
: > >> > : at an application level.
: > >> > :
: > >> > : To me it appears that different worker processes cannot be used
to
: > >> > : execute the requests for one application ... but then MS
: documentation
: > >> > : talks about Web Garden where different worker processes execute
: > >requests
: > >> > : for an application domain.
: > >> > :
: > >> > : I will be very gratefull if you could share some knowledge on
this
: > >> > : matter. Thanks for your help in advance.
: > >> > :
: > >> > : regards,
: > >> > : Abhishek.
: > >> >
: > >> >
: > >
: >
:
:
Nov 18 '05 #8
Thanks everyone for replying. Does anyone know someone who has much more
internal knowledge of IIS ?

If different worker process run in full isolation from each other, then
application programmers must be careful in managing static resources.
because updates made in one process may not be visible to another.

If the processes do talk to one another and synchronize data from time
to time, then we must know some details about how this is being done.
Otherwise the application can behave unpredictably because of data
synchronization issues.

Take another example:

I make a request to the IIS and wp1 picks up the request from the
http.sys queue for the first time. When next call was made wp2 picks up
the request from the queue. But wp2 does not have my session data so it
cannot process my second request.

If the data from wp1 is replicated to wp2 (by some unknown means) then
it would bean that each worker process replicates its data into all
other worker processes. This would really impact scalability of each
worker process.

The other solution can be that there is a worker process sticky-ness. so
that the request goes to the same worker process which had the session.
But this would defeat the purpose of having a http.sys queue based
request processing approach.

So unless something very magical is happening inside, I feel that only
one worker process can process requests for a application (the worker
process can be shared by many applications inside the same application
pool). I also discussed this with a friend who felt that the concept of
web-garden means multiple "processors" (CPU) not multiple processes.

I am really confused now.... please advise.

regards,
Abhishek.

Ken Schaefer wrote:
A given worker process can have multiple threads servicing requests. These
will all share the same connection pool. I don't understand how two
arbitrary w3wp.exe processes would share the same connection pool however.

If you're writing an application that requires multiple w3wp.exe (web
garden), then you probably already have a internet connector-type licence
for SQL Server (rather than 10 CALs or similar). The connection pooling
provided by the MDAC components is quite good IMHO.

Cheers
Ken
"Jerry III" <je******@hotmail.com> wrote in message
news:%2****************@tk2msftngp13.phx.gbl...
: You're kidding, right? What good is connection pooling if it can't be
shared
: across multiple instances of the same code? How exactly are we supposed to
: tune the connection pool size if we (as developers) have no idea how many
: connection pools are there going to be since some customers will setup
their
: web site to run in multiple processes?
:
: Jerry
:
: "Scott Allen" <bitmask@[nospam].fred.net> wrote in message
: news:v5********************************@4ax.com...
: > Jerry: To share a connection from an exisitng pool you need to be in
: > the same process, have the same security context, and use the exact
: > same connection string as the pool. In .NET you also need to be in the
: > same app domain which can further subdivide a process.
: >
: > --
: > Scott
: > http://www.OdeToCode.com
: >
: > On Fri, 30 Jan 2004 10:26:12 -0800, "Jerry III" <je******@hotmail.com>
: > wrote:
: >
: > >The fact that MDAC does not have it's process does not mean that it
can't
: > >share connection pools across different applications. I don't know how
: you
: > >came to that conclusion.
: > >
: > >Jerry
: > >
: > >"Abhishek Srivastava" <ab*****************@nospam.net> wrote in message
: > >news:u2**************@TK2MSFTNGP12.phx.gbl...
: > >> How do the workers synchronize the data? suppose I keep a DOM tree in
: > >> the application object.
: > >>
: > >> Now one worker process updates a node in the dom tree. Will other
: worker
: > >> processes (who have thier own version of the in-memory state) see the
: > >> changes? What is the mechanism of synchronization.
: > >>
: > >> One question about MDAC. Is MDAC an out-of-process thing? AFAIK, it
is
: a
: > >> set of DLLs which run in the memory of the application.(Used MDAC
many
: > >> times... but never saw a separate exe or DLLHOST begining to run upon
: > >> querying my DB) Even if I let the MDAC manage my pool, if multiple
: > >> processes are creating their own pools, then what is the total number
: of
: > >> connections beging opened to the database? If I have a limitation on
: the
: > >> max number of connections, then how do I manage it?
: > >>
: > >> Can you please confirm that multiple processes can definetly run
: execute
: > >> the requests for a single application.
: > >>
: > >> regards,
: > >> Abhishek.
: > >>
: > >> Ken Schaefer wrote:
: > >> > Each worker process keeps its own in-memory state. You would need
: some
: > >kind
: > >> > of out-of-process state management if you want to share data
between
: > >> > processes.
: > >> >
: > >> > Additionally, I would suggest that you are best of managing
database
: > >> > connections via built-in MDAC connection pooling, not through your
: own
: > >> > home-grown system. You can limit the number of connections in the
: pool.
: > >> >
: > >> > Cheers
: > >> > Ken
: > >> >
: > >> > "Abhishek Srivastava" <ab*****************@nospam.net> wrote in
: message
: > >> > news:OE**************@TK2MSFTNGP11.phx.gbl...
: > >> > : Hello All,
: > >> > :
: > >> > : In IIS 6.0 We have a concept of worker processes and application
: > >pools.
: > >> > :
: > >> > : As I understand it, we can have multiple worker process per
: appliction
: > >> > : pool. Each worker process is dedicated to a pool. If I assign
only
: one
: > >> > : application to a applicaton pool and have multiple worker
processes
: > >> > : assigned to that pool. Will my application be processed by many
: worker
: > >> > : processes?
: > >> > :
: > >> > : Why I am asking this question is because there are certain
: resources
: > >> > : which are in-memory and are shared at an application level. For
: > >example
: > >> > : the database connection pool, or some XML files initialized via a
: > >static
: > >> > : contructor.
: > >> > :
: > >> > : Now if multiple process are executing my requests, then how do
they
: > >> > : share data (if they do at all). Or each process replicates its
own
: > >> > : resources.
: > >> > :
: > >> > : This is important to me, because lets say I am connection to a
: > >> > : datasource for which I have a 20 concurrent user license. So I
: create
: > >a
: > >> > : pool of 20 connections and manage it. This pool is in-memory
: > >initialized
: > >> > : via a static constructor. Now if each worker process tries to
load
: its
: > >> > : own in-memory pool, then only one process would function because
: rest
: > >> > : will be denied the connection. I also have no way of knowing how
: many
: > >> > : worker process will run at any moment because they are run based
on
: > >> > : demand by the IIS so I cannot split the load amongst multiple
: > >processes
: > >> > : at an application level.
: > >> > :
: > >> > : To me it appears that different worker processes cannot be used
to
: > >> > : execute the requests for one application ... but then MS
: documentation
: > >> > : talks about Web Garden where different worker processes execute
: > >requests
: > >> > : for an application domain.
: > >> > :
: > >> > : I will be very gratefull if you could share some knowledge on
this
: > >> > : matter. Thanks for your help in advance.
: > >> > :
: > >> > : regards,
: > >> > : Abhishek.
: > >> >
: > >> >
: > >
: >
:
:

Nov 18 '05 #9
Jerry III wrote:
The fact that MDAC does not have it's process does not mean that it can't
share connection pools across different applications. I don't know how you
came to that conclusion.

Jerry

"Abhishek Srivastava" <ab*****************@nospam.net> wrote in message
news:u2**************@TK2MSFTNGP12.phx.gbl...
How do the workers synchronize the data? suppose I keep a DOM tree in
the application object.

Now one worker process updates a node in the dom tree. Will other worker
processes (who have thier own version of the in-memory state) see the
changes? What is the mechanism of synchronization.

One question about MDAC. Is MDAC an out-of-process thing? AFAIK, it is a
set of DLLs which run in the memory of the application.(Used MDAC many
times... but never saw a separate exe or DLLHOST begining to run upon
querying my DB) Even if I let the MDAC manage my pool, if multiple
processes are creating their own pools, then what is the total number of
connections beging opened to the database? If I have a limitation on the
max number of connections, then how do I manage it?

Can you please confirm that multiple processes can definetly run execute
the requests for a single application.

regards,
Abhishek.

Ken Schaefer wrote:
Each worker process keeps its own in-memory state. You would need some
kind
of out-of-process state management if you want to share data between
processes.

Additionally, I would suggest that you are best of managing database
connections via built-in MDAC connection pooling, not through your own
home-grown system. You can limit the number of connections in the pool.

Cheers
Ken

"Abhishek Srivastava" <ab*****************@nospam.net> wrote in message
news:OE**************@TK2MSFTNGP11.phx.gbl...
: Hello All,
:
: In IIS 6.0 We have a concept of worker processes and application
pools.
:
: As I understand it, we can have multiple worker process per appliction
: pool. Each worker process is dedicated to a pool. If I assign only one
: application to a applicaton pool and have multiple worker processes
: assigned to that pool. Will my application be processed by many worker
: processes?
:
: Why I am asking this question is because there are certain resources
: which are in-memory and are shared at an application level. For
example
: the database connection pool, or some XML files initialized via a
static
: contructor.
:
: Now if multiple process are executing my requests, then how do they
: share data (if they do at all). Or each process replicates its own
: resources.
:
: This is important to me, because lets say I am connection to a
: datasource for which I have a 20 concurrent user license. So I create
a
: pool of 20 connections and manage it. This pool is in-memory
initialized
: via a static constructor. Now if each worker process tries to load its
: own in-memory pool, then only one process would function because rest
: will be denied the connection. I also have no way of knowing how many
: worker process will run at any moment because they are run based on
: demand by the IIS so I cannot split the load amongst multiple
processes
: at an application level.
:
: To me it appears that different worker processes cannot be used to
: execute the requests for one application ... but then MS documentation
: talks about Web Garden where different worker processes execute
requests
: for an application domain.
:
: I will be very gratefull if you could share some knowledge on this
: matter. Thanks for your help in advance.
:
: regards,
: Abhishek.


just for my knowledge, does mdac or ado.net operates on some shared
memory between processes ?
how can i see how much that shared memory is

we are running an web application and trying to chase some lost memory,
some people have also talked about some issue recognised by microsoft as
abug ( gc not returning large object heap to OS ) . but i did not find
any article on microsofts website on this

Thanks
-ashish

Nov 18 '05 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
by: Mark | last post by:
Hi... We're looking at moving an ASP app from IIS 5 to IIS 6. In general things seem to be working okay, but there are some oddities around the edges. One of those unanticipated changes has to...
1
by: Dominic | last post by:
I'd like to tune the performance of my application in a web garden. Our server has dual processors. Is there any guideline to set this "maximum number of worker processes" for web garden? In my...
6
by: Param R. | last post by:
Hi all, lets assume my application is running under an app pool that has 2 worker processes servicing requests. Will the Application & Cache objects be the same & concurrent amongst all requests?...
0
by: domtam | last post by:
Hi everybody, As far as I understand, each worker process in a web garden (say, in IIS 6.0) has its own copy of Cache objects, static objects and Application(state) objects. In other words, they...
1
by: mabrin | last post by:
Hi, we use 5 worker process on win2k3 to serve. We have a small form with a post back. It nearly almost throws "Unable to validate data" (ViewState is not getting too long). We save your session...
0
by: Rusty Shackleford | last post by:
I am having trouble getting my ASP.Net applications and sessions to stay running. At first, I thought it was my lack of understanding of ASP.Net, or the fact that I am using Anonymous...
6
by: James Radke | last post by:
Hello, I have a multithreaded windows NT service application (vb.net 2003) that I am working on (my first one), which reads a message queue and creates multiple threads to perform the processing...
0
by: YVT1968 | last post by:
Hi, Here is the problem statement. I have an asp.net application, let's call it "A". From this application, I open 3 more applications, let's call them, A1, A2, A3. Now, in the default page on A, I...
0
by: Diffident | last post by:
Hello All, I have a question about worker processes and session state. If I set-up a web farm architecture by having multiple worker processes serving a single application, how will the session...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.