现在我们有一个使用原始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可能推迟,但当然不能解决。
总结以上是内存溢出为你收集整理的Perl连接池全部内容,希望文章能够帮你解决Perl连接池所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)