我有一个 Rails 前端服务器,它接收来自用户的多个请求,然后将这些请求发送到后端服务器。
后端服务器异步处理请求,并在完成每个请求后通知前端服务器。
我使用 Redis pub/sub 在这两个服务器之间进行通信。特别是,对于来自用户的每个请求,我都会创建一个新的 Redis 实例来订阅单个 channel (例如,scoring_channel
)。
但是,如果我有 100 个用户同时发出请求,则每个 Redis 订阅者将持有一个线程。
这会影响我的服务器性能吗?如果我对最大线程数有限制(例如,Heroku 允许最多 256 个线程),我应该如何避免这个问题?
最佳答案
这不会影响服务器性能,因为 redis 从未被 pub/sub 阻塞。 您应该在客户端使用非阻塞 API 而不是阻塞版本以减少线程数。
关于ruby-on-rails - 使用 Redis pub/sub 创建太多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21978564/