RE: Connection pool with Apache::DBI and Oracle

2003-01-27 Thread Georg Botorog
I don't understand. The Apache server I am using has 50 ThreadsPerChild
(default in httpd.conf). Thus, Apache is able to handle quite a few
requests simultaneously. However, Oracle has only one session for the
job. As a consequence, starting two identical requests from distinct
clients leads to blocking the second request until the first one is
served. Now, to my modest understanding, this is bottleneck.

But maybe I'm doing something wrong here. Or perhaps I have
misunderstood something.



> -Original Message-
> From: Perrin Harkins [SMTP:[EMAIL PROTECTED]]
> Sent: Friday, January 24, 2003 7:30 PM
> To:   Georg Botorog
> Cc:   [EMAIL PROTECTED]
> Subject:      Re: Connection pool with Apache::DBI and Oracle
> 
> Georg Botorog wrote:
> > More precisely, I am using Apache::DBI to create and cache the
> > connection to the DB. As this connection uses a single Oracle
> session,
> > it is obvious that it becomes a bottleneck.
> 
> Apache::DBI uses one connection per process.  There is no bottleneck 
> there.  Each process only handles one request at a time so it would
> have 
> no use for more than one database connection.
> 
>  > Ideally, one would have a pool of DB
> > sessions (= DB handles) that the Apache threads would use in serving
> the
> > requests coming from clients.
> 
> That's only ideal if your code spends a lot of time doing things that 
> don't involve a database.  You shgould be running with a reverse proxy
> 
> in front, so that mod_perl processed will not be serving static files.
> 
> > Alternatively, is it possible to convince several Apache servers
> running
> > concurrently to cooperate (i.e., load balance) in answering incoming
> > requests? If yes, how?
> 
> Any load-balancer will do that.  There are dozens, both commercial and
> 
> open source.  See the mod_perl documentation for a list you can start
> with.
> 
> - Perrin
> 



Re: Connection pool with Apache::DBI and Oracle

2003-01-24 Thread Perrin Harkins
Georg Botorog wrote:

More precisely, I am using Apache::DBI to create and cache the
connection to the DB. As this connection uses a single Oracle session,
it is obvious that it becomes a bottleneck.


Apache::DBI uses one connection per process.  There is no bottleneck 
there.  Each process only handles one request at a time so it would have 
no use for more than one database connection.

> Ideally, one would have a pool of DB
sessions (= DB handles) that the Apache threads would use in serving the
requests coming from clients.


That's only ideal if your code spends a lot of time doing things that 
don't involve a database.  You shgould be running with a reverse proxy 
in front, so that mod_perl processed will not be serving static files.

Alternatively, is it possible to convince several Apache servers running
concurrently to cooperate (i.e., load balance) in answering incoming
requests? If yes, how?


Any load-balancer will do that.  There are dozens, both commercial and 
open source.  See the mod_perl documentation for a list you can start with.

- Perrin