【问题标题】:Using Redis pub/sub creates too many threads使用 Redis pub/sub 会创建太多线程
【发布时间】:2014-03-25 13:44:44
【问题描述】:

我有一个 Rails 前端服务器,它接收来自用户的多个请求,然后将这些请求发送到后端服务器。

后端服务器异步处理请求,并在完成每个请求时通知前端服务器。

我使用 Redis pub/sub 在这两个服务器之间进行通信。特别是,对于来自用户的每个请求,我都会创建一个订阅单个频道的新 Redis 实例(例如,scoring_channel)。

但是,如果我有 100 个用户同时发出请求,则每个 Redis 订阅者将持有一个线程。

这会影响我的服务器性能吗?如果我对最大线程数有限制(例如,Heroku 允许最多 256 个线程),我应该如何避免这个问题?

【问题讨论】:

  • 如果所有线程都订阅同一个频道,那么订阅这么多是不是太贵了?我觉得订阅如果不是唯一的应该是普遍的。此外,如果每个线程订阅相同的频道,那么所有线程都会获得相同的数据,这是否需要作为您设计的一部分?

标签: ruby-on-rails redis publish-subscribe


【解决方案1】:

这不会影响服务器性能,因为 redis 从未被 pub/sub 阻塞。 您应该在客户端使用非阻塞 API 而不是阻塞版本来减少线程数。

【讨论】:

    猜你喜欢
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 2019-12-02
    • 2016-01-18
    相关资源
    最近更新 更多