【问题标题】:Why does Perl reuse the same MySQL connection in this Munin script?为什么 Perl 在这个 Munin 脚本中重用相同的 MySQL 连接?
【发布时间】:2016-12-27 02:59:36
【问题描述】:

我已经修改了来自 Munin 的脚本 mysql_,使函数 do_connect 看起来像这样:

sub db_connect {
    my $dsn =     "$config{dsn};mysql_socket=$config{mysqlsocket};mysql_connect_timeout=5;";

    return DBI->connect($dsn, $config{user}, $config{password}, {
        RaiseError       => 1,
        PrintError       => 0,
        FetchHashKeyName => 'NAME_lc',
    });
}

我已配置plugins-conf 为环境变量mysqlsocket 中反映的套接字设置不同的值。因此,每个实例都有自己的 env.mysqlsocket 值。当我使用

运行我的实例时
$ for i in a b c; do munin-run mysql_${i}_innodb_rows; done

然后第一个连接(a 按此顺序)打开一个连接,供后续连接使用,而不是它们的套接字。连接字符串是正确的,它们确实发生了变化。

DBI->connect 未执行。我可以通过将套接字文件名设置为不存在的文件来证明这一点;它再次重用相同的连接。

我想知道,因为这些是符号链接脚本的独立进程。

我怎样才能强制我的 Perl 脚本打开一个新连接?

【问题讨论】:

    标签: mysql perl munin


    【解决方案1】:

    使用手册:

    $dsn->disconnect;
    

    【讨论】:

    • 谢谢提示;是的,原来的插件代码忽略了这一点,但我已经添加了。没有成功。
    • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
    猜你喜欢
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 2014-11-03
    • 2016-12-29
    • 2017-04-08
    相关资源
    最近更新 更多