Hi,

There is nothing exactly like the database pool in JDBC.  However, there are solutions for this problem.

The first thing you should do is run a reverse proxy in front of your mod_perl server.  That typically reduces the number of mod_perl processes by a factor of 10, i.e. 1000 mod_perl processes for 10,000 front-end proxy processes.  See http://perl.apache.org/docs/1.0/guide/strategy.html#Adding_a_Proxy_Server_in_http_Accelerator_Mode

Note that there are many lightweight proxy servers now that can act as a front-end for mod_perl, not just Apache httpd.

That's definitely what you should do first, but if you've done that and it's still not enough, you can also use DBD::Gofer.  There is an explanation here: http://search.cpan.org/~timb/DBI-1.627/lib/DBD/Gofer.pm#Connection_Pooling_and_Throttling

Tim's slides explaining how this was used in a real-world scenario are here:
http://www.slideshare.net/Tim.Bunce/dbdgofer-200809

- Perrin


On Thu, Jun 27, 2013 at 2:26 AM, xiaolan <practicalperl@gmail.com> wrote:
Hi,

Currently I have been using Apache::DBI for long connections to Mysql.
But having the problem that, if the apache processes are 10000, they open 10000 connections to mysql, this make the DB crashed.
Is there any software for modperl working like Java's JDBC for connection pooling?

Thanks.