apache中的连接池(Web服务器)

时间:2009-08-25 06:28:35

标签: tomcat web-applications connection-pooling

我想在我的web应用程序中实现连接池。请建议我如何实现它。

2 个答案:

答案 0 :(得分:2)

我说你有两个问题:

  • 您不知道是否需要连接池

  • 如果您发现需要它,您将不知道如何实施它。

我最初的假设是你不需要它,重用连接是一种(可能是不成熟的)优化。

但是,如果您发现确实需要它,那么您的操作方式取决于应用程序服务器的性质。

  • 如果您的应用程序是“在进程中”使用Apache,除了每个进程一个连接(或线程)之外,您真的没有其他选择
  • 如果您的应用“处于停用状态”,例如通过mod_jk连接到Tomcat,然后您可以在应用服务器(Tomcat)中执行您喜欢的操作,其中可能包括在多个线程中使用的池连接。

每次使用新连接的令人信服的理由是:

  • 先前请求遗留的旧连接状态没有不良副作用
  • 您只需在需要时进行连接 - 减少吹嘘数据库连接的风险
  • 可预测的效果 - 您可以衡量请求所需的时间,包括创建连接

重用连接的唯一令人信服的理由是连接开销时间本身。

某些数据库创建连接的速度相对较慢(Oracle) - 其他数据库的速度要快得多(MySQL)。可以调整一些数据库以在内部保留一个线程池,它们可以重用(MySQL),这使得连接速度更快。

答案 1 :(得分:0)

虽然我没有明确的答案(我也在看),但我可以建议以下内容(对于perl后端):

  • 如果您使用的是mod_perl2,那么请查看Apache :: DBI(http://metacpan.org/pod/Apache::DBI)。它有一些缺点,列在页面上。
  • 如果使用perl DBI连接到数据库,则使用connect_cached()方法调用,而不是使用connect()方法调用。