【问题标题】:How to share MySQL connection between parent and children with Resque?如何使用 Resque 在父母和孩子之间共享 MySQL 连接?
【发布时间】:2012-02-03 07:50:16
【问题描述】:

默认情况下,在 Resque 中,父进程分叉,子进程创建到数据库的新连接。

这可行,但如果您有几十个工作人员,MySQL 将无法保持打开那么多连接并开始抛出错误。

让孩子使用父母的 MySQL 连接的解决方案是什么?

【问题讨论】:

    标签: mysql ruby-on-rails ruby database resque


    【解决方案1】:

    不幸的是,没有一种安全的方法可以将 MySQL 连接从父级共享到子级。我认为您有两种选择:

    1. 最简单的解决方案是调整 MySQL 服务器,使其能够接受更多连接(即:http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html)。
    2. 查看 Resque 的替代方案和/或设计(即:beanstalkd、Redis 等),以避免创建与 MySQL 服务器的多个连接。

    【讨论】:

    • 我必须使用大量连接才能尽可能快地处理大量数据。更改为 beanstalk 或任何其他排队系统都不会改变它。使用 redis 做存储是个坏主意,但 Resque 用它来做队列,而且很完美。
    • 你确定除了允许更多的连接没有别的办法吗?
    • 另一个选项可能是使用“resque-jobs-per-fork”,链接:github.com/samgranieri/resque-jobs-per-fork。这将允许您在每个 fork 中处理多个作业,从而减少所需的并发连接数。这个帖子也可能有帮助:librelist.com/browser//resque/2010/6/28/reducing-database-churn/….
    猜你喜欢
    • 1970-01-01
    • 2020-04-21
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多