On 9/8/10 4:54 PM, Simon Miner wrote:
Thanks for the responses,
Jason, I don't think reducing the number of database connections will
hurt responsiveness. Even though there are 3 separate Catalyst apps,
each HTTP request will only involve one of them (since they all run
out of the same web server), so there should never be contention
between the apps for the shared database connection. Does this make
sense?
Tom and Nicholas, I wish this was premature optimization, but my
organization has experienced serious performance issues in the past
related to multiple (Oracle) database connections per HTTP server
process. Extra Oracle connections are expensive to maintain,
particularly on the database server, and so we've tried to ensure that
a single server process only has a single connection to a given
database (since that's all it should need at any given time).
I've attached a Devel::NYTProf screenshot for one of the server
processes I profiled this morning. Looks like it confirms the multiple
database connections.
So back to initial question -- How do I update the models of my three
Catalyst apps to share a single Oracle database connection?
Sounds like a job for Apache::DBI -- it will cache one connection per
process and hand it over to the next app that requests it as long as
it's valid -- but keep in mind that the connection attributes MUST be
the same for all three Catalyst apps for the magic to happen. From the
perldoc:
The parameters defining the connection have to be exactly the same,
including the connect attributes! If there is no appropriate database
handle or if the ping method fails, a new connection is established
and the handle is stored for later re-use.
I agree that this is not early optimization -- just good housekeeping.
Oracle SQL Net connections are indeed expensive to set up but tend to
consume near-zero resources when idle, so I would not worry too much
about connection reuse among apps just yet - in my book this is more of
a sysadmin issue.
Thanks again. I really appreciate your feedback.
Simon
Hope this helps,
-Javier Arturo Rodriguez
On Tue, Sep 7, 2010 at 11:40 PM, Nicholas Wehr
<[email protected] <mailto:[email protected]>> wrote:
I'm with Tom on this one. Unless you've narrowed all optimization
efforts and this is all you have left - it could be worth a try..
but as Jason points out, you may not gain a thing. I'd recommend
profiling your code and tracking down performance issues from that
base level. Please post your results - I've very curious!
-nw
On Tue, Sep 7, 2010 at 7:21 PM, Tomas Doran <[email protected]
<mailto:[email protected]>> wrote:
On 7 Sep 2010, at 18:59, Simon Miner wrote:
All three of these apps run under a single Apache
1.3.42/mod_perl 1.31 server.
Wow, mod_perl 1.... Ok then :)
It appears that each server process creates a unique
database connection variable for each of these apps.
Although these database connections get reused from
request to request, I would like to make things even more
efficient by having a single database connection variable
per server process which gets shared across all 3 Catalyst
apps.
Why do you think that this will help or affect anything?
I.e. is this not premature optimisation?
Cheers
t0m
_______________________________________________
List: [email protected]
<mailto:[email protected]>
Listinfo:
http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive:
http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/
_______________________________________________
List: [email protected] <mailto:[email protected]>
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive:
http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/
--
-- Simon
_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/
_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/