Redis上的连接数量是否会限制我可以在后台执行的作业数量?

时间:2018-12-21 14:39:06

标签: ruby-on-rails redis sidekiq

我目前在我的Rails应用程序上使用Sidekiq(免费)和Heroku Redis(免费)。我注意到Heroku Redis表示连接限制为20。

这会影响/限制我可以使用Sidekiq执行的后台作业的数量吗?

本质上,我在此应用程序中使用Sidekiq的所有功能都是发送电子邮件以获取新闻通讯。新闻稿准备好后,通过单击按钮发送电子邮件。此按钮从我的user执行以下代码:

exports.createUserNode = functions.auth.user().onCreate((user) => {

    return getUser(user.email)
        .then((querySnapshot) => {
            if (querySnapshot.empty) {
                return createEntity("new Entity").then((docRef) => {
                    var entity = docRef.get();       
                    return db.collection('/users').add({
                            email: user.email,
                            uid: user.uid,
                            entities: [{ uid: entity.data().id, name: entity.data().name }]
                        })
                    })
            } else { // user already exist
                return null;
            }
        })
        .catch( (error) => {
            return console.log("Error creating new user: ", error);
        });
});

function getUser(email) {
    return db.collection('/users').where("email", "==", email).limit(1).get();
}

function createEntity(name) {
    return db.collection('/entities').add({
        name: name
    })
}

我目前在该应用上有63个用户,因此这将发送63封邮件。但是,我希望以后再添加更多。

谢谢。

1 个答案:

答案 0 :(得分:1)

要使Sidekiq正常工作,您需要从Web服务器端(又名客户端)建立连接,并需要从sidekiq worker(又名Server / worker)建立连接,所有这些都已合并。

因此,连接限制会影响您可以拥有的并发工作程序和Web服务器进程/线程的数量。这限制了可以并行处理的作业数量,而不是总作业数。

还请记住,在部署期间,您将获得来自Web dynos的两倍连接(当新的dyno已经启动而旧的dynas仍在处理连接时)。

对于sidekiq配置,您可以使用calculator by Manuel van Rijn