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/

Reply via email to