These aren't formal benchmarks but, having just tried it on one of our
development systems, I can tell you that Apache2::DBI without pgbouncer is
slower than using pgbouncer without Apache2::DBI. Although, using both
seems to be marginally faster than either.


On Tue, Apr 22, 2014 at 12:36 PM, Perrin Harkins <phark...@gmail.com> wrote:

> Apache::DBI overrides DBI's connect() method so that you're using
> persistent connections when you use DBI directly.  It may be that your
> performance improvement came from better management of Pg resources
> with PgBouncer than from reducing connection overhead.  You could test
> it be removing Apache::DBI and benchmarking.
>
> - Perrin
>
> On Tue, Apr 22, 2014 at 12:33 PM, John Dunlap <j...@lariat.co> wrote:
> > use Apache::DBI (); appears in our startup.pl but the application code
> uses
> > DBI directly.
> >
> >
> > On Tue, Apr 22, 2014 at 12:30 PM, Perrin Harkins <phark...@gmail.com>
> wrote:
> >>
> >> Thanks John.  Were you using Apache::DBI before PgBouncer?
> >> Apache::DBI would also eliminate the overhead of establishing new
> >> connections.
> >>
> >> - Perrin
> >>
> >> On Tue, Apr 22, 2014 at 12:23 PM, John Dunlap <j...@lariat.co> wrote:
> >> > I can speak to your final point. I recently deployed PGBouncer into
> our
> >> > production environment and, like the OP, we have separate web and
> >> > database
> >> > servers. With PGBouncer running on the web server(you could also run
> it
> >> > on
> >> > the database server if you wanted to) we noticed a dramatic increase
> in
> >> > performance. I haven't looked into it in detail but my best guess is
> >> > that
> >> > running the pool on the web server eliminates the overhead of
> >> > establishing
> >> > new connections(DNS lookups, establishing TCP connections,
> >> > authentication,
> >> > waiting for the database to spool up a new process, etc).
> >> >
> >> >
> >> > On Tue, Apr 22, 2014 at 12:18 PM, Perrin Harkins <phark...@gmail.com>
> >> > wrote:
> >> >>
> >> >> Interesting.  Why did you have to install PgBouncer?  Can't Postgres
> >> >> handle remote connections from your web server?
> >> >>
> >> >> I don't use Postgres, but reading the description of PgBouncer I can
> >> >> see some things you'd want to consider.
> >> >>
> >> >> First, Apache::DBI prevents you from making persistent connections
> >> >> before the parent process forks.  If you don't use it, you should
> >> >> check your code to make sure that it closes any handles it opens
> >> >> during server startup.
> >> >>
> >> >> Second, there's the issue of what happens when your code throws an
> >> >> exception.  Apache::DBI will issue a rollback on any active handles
> >> >> that aren't in autocommit mode after each request.  If you don't use
> >> >> it, I'd suggest adding your own cleanup handler to do a rollback.
> >> >>
> >> >> Finally, there's the issue of performance.  It's not clear whether
> DBI
> >> >> connects faster when using PgBouncer.  You should probably benchmark
> >> >> that yourself.  You may still get a significant speed boost from
> >> >> caching the connections (with Apache::DBI) on the client side.
> >> >>
> >> >> - Perrin
> >> >>
> >> >> On Tue, Apr 22, 2014 at 10:02 AM, jbiskofski <jbiskof...@gmail.com>
> >> >> wrote:
> >> >> > I just want to confirm something with all you smart folks.
> >> >> >
> >> >> > I recently separated my web servers from my database servers,
> before
> >> >> > I
> >> >> > was
> >> >> > using Apache::DBI to maintain persistent connections between Apache
> >> >> > and
> >> >> > Postgres. With this new setup I had to install PgBouncer. Can I now
> >> >> > safely
> >> >> > remove Apache::DBI from my application and use regular DBI ??
> >> >> >
> >> >> > Thank you.
> >> >> >
> >> >
> >> >
> >
> >
>

Reply via email to