微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Perl连接池

现在我们有一个使用原始DBI连接到MysqL并执行sql语句的大型perl应用程序。 它每次创build一个连接并终止。 开始接近MysqL的连接限制(一次200)

它看起来像DBIx :: Connection支持应用程序层连接池。

有没有人有任何使用DBIx::Connection经验? 连接池是否还有其他注意事项?

我也看到mod_dbd ,这是一个Apache的mod,看起来像处理连接池。 http://httpd.apache.org/docs/2.1/mod/mod_dbd.html

与客户端证书的SSL重新协商导致服务器缓冲区溢出

为什么谷歌索引链接连字符和%20的友好URL?

PHP + jquery ajax请求使用太多的cpu

使用htaccess apacheredirect所有机器人

使用PHP从本地运行的Apache Web服务器启动X应用程序

常量的特殊字符?

Nginx:它的multithreading,但使用多个进程?

HTTP / 2和CNAME如何协同工作?

解决“HTTP 510不扩展”的错误

使用.htaccessredirect网站,但排除两个+文件

我没有DBIx :: Connection的任何经验,但我使用DBIx ::连接器 (实质上是什么DBIx :: Class内部使用,但内联),这是美好的…

我将这些连接与一个Moose对象包装器集中在一起,如果连接参数是相同的(这对于任何底层的DB对象都是一样的)。

package MyApp::Factory::DatabaseConnection; use strict; use warnings; use Moose; # table of database name -> connection objects has connection_pool => ( is => 'ro',isa => 'HashRef[DBIx::Connector]',traits => ['Hash'],handles => { has_pooled_connection => 'exists',get_pooled_connection => 'get',save_pooled_connection => 'set',},default => sub { {} },); sub get_connection { my ($self,%options) = @_; # some application-specific parsing of %options here... my $obj; if ($options{reuse}) { # extract the last-allocated connection for this database and pass it # back,if there is one. $obj = $self->get_pooled_connection($options{database}); } if (not $obj or not $obj->connected) { # look up connection info based on requested database name my ($dsn,$username,$password) = $self->get_connection_info($options{database}); $obj = DBIx::Connector->new($dsn,$password); return unless $obj; # Save this connection for later reuse,possibly replacing an earlier # saved connection (this latest one has the highest chance of being in # the same pid as a subsequent request). $self->save_pooled_connection($options{database},$obj) unless $options{nosave}; } return $obj; }

只要确保:你知道DBI->connect_cached() ,对不对? 这是一个替代connect() ,在可能的情况下,在你的perl脚本生命周期中重用dbh。 也许你的问题可以通过添加7个字符来解决:)

而且,MysqL的连接相对便宜。 在max_connections=1000以上运行数据库本身不会造成问题。 (如果你的客户要求更多的工作比你的数据库可以处理,这是一个更严重的问题,一个较低的max_connections可能推迟,但当然不能解决

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐