ActionCable:为什么有这么多连接?

ActionCable: Why so many connections?

自从在本地开发环境中试用 ActionCable 以来。我注意到应用程序速度变慢并经常挂起。

如果我 运行 netstat 我看到很多连接,由 action cable 创建。这是预期的和正常的吗?

 netstat -atn | grep 3000
tcp4       0      0  127.0.0.1.3000         127.0.0.1.52163        ESTABLISHED
tcp4       0      0  127.0.0.1.52163        127.0.0.1.3000         ESTABLISHED
tcp4       0      0  127.0.0.1.3000         127.0.0.1.52161        ESTABLISHED
tcp4       0      0  127.0.0.1.52161        127.0.0.1.3000         ESTABLISHED
tcp4       0      0  127.0.0.1.3000         127.0.0.1.52159        ESTABLISHED
tcp4       0      0  127.0.0.1.52159        127.0.0.1.3000         ESTABLISHED
tcp4       0      0  127.0.0.1.3000         127.0.0.1.52157        ESTABLISHED
tcp4       0      0  127.0.0.1.52157        127.0.0.1.3000         ESTABLISHED
tcp4       0      0  127.0.0.1.3000         127.0.0.1.52155        ESTABLISHED
tcp4       0      0  127.0.0.1.52155        127.0.0.1.3000         ESTABLISHED
tcp4       0      0  127.0.0.1.3000         127.0.0.1.52152        ESTABLISHED
tcp4       0      0  127.0.0.1.52152        127.0.0.1.3000         ESTABLISHED
tcp4       0      0  127.0.0.1.3000         127.0.0.1.52146        ESTABLISHED
tcp4       0      0  127.0.0.1.52146        127.0.0.1.3000         ESTABLISHED
tcp4       0      0  *.3000                 *.*                    LISTEN
tcp4       0      0  127.0.0.1.3000         127.0.0.1.51682        TIME_WAIT
tcp4       0      0  127.0.0.1.3000         127.0.0.1.51688        TIME_WAIT
tcp4       0      0  127.0.0.1.3000         127.0.0.1.51684        TIME_WAIT
tcp4       0      0  127.0.0.1.3000         127.0.0.1.51686        TIME_WAIT
tcp4       0      0  127.0.0.1.3000         127.0.0.1.51667        TIME_WAIT
tcp4       0      0  127.0.0.1.3000         127.0.0.1.51690        TIME_WAIT

我试过更改预先加载,但它似乎并没有改变这种行为

config.eager_load = true
production:
 adapter: redis
 url: redis://redis.example.com:6379

local: &local
 adapter: redis
 url: redis://localhost:6379

development: *local
test: *local

https://www.phusionpassenger.com/library/config/standalone/action_cable_integration/

关注link

异步适配器

异步适配器适用于 development/testing,不应在生产中使用。

Redis 适配器

Action Cable 包含两个 Redis 适配器:"normal" Redis 和 Evented Redis。这两个适配器都要求用户提供指向 Redis 服务器的 URL。此外,当多个应用程序使用相同的 Redis 服务器时,可以提供 channel_prefix 以避免通道名称冲突。有关详细信息,请参阅 Redis PubSub 文档。

PostgreSQL 适配器

PostgreSQL 适配器使用 Active Record 的连接池,因此应用程序的 config/database.yml 数据库配置用于其连接。这在未来可能会改变。