Django 频道 "ERROR Y of N channels over capacity in group subscriptions"
Django channels "ERROR Y of N channels over capacity in group subscriptions"
我正在使用我的 Django 应用程序进行负载测试,该应用程序使用 Django 通道和 Redis 通道层提供 GraphQL 订阅(django
、graphene-django
、channels
、graphene-subscriptions
, channels-redis
).作为 ASGI 服务器,我现在正在使用 daphne
。我使用 nginx
作为代理。后端通过 GraphQL 订阅发布消息的周期取决于后端通过 MQTT 接收消息的周期。我正在增加外部数据提供者向 MQTT 代理发布消息的周期性,这意味着后端必须处理这些消息并通过 GraphQL 订阅发布消息的周期性。我遇到以下错误:
2020-03-11 08:33:58,464 ERROR 2 of 12 channels over capacity in group subscriptions
这个问题似乎是由 channels_redis 引起的。我可以扩展基础设施来解决这个问题吗?
默认容量为 100 条消息,默认消息过期时间为
60 秒。因此,如果在这些容量/时间内从未读取过频道
约束,它会填满。
频道可能已满的一个原因是连接永远不正确
关闭。在这种情况下,频道将保留在组中并最终填满。
缓解这种情况的一种方法是拥有足够的容量和较短的超时时间。你
可以通过以下方式更改 Django 设置中的配置:
CHANNEL_LAYERS = {
"default": {
"BACKEND": "channels_redis.core.RedisChannelLayer",
"CONFIG": {
"hosts": REDIS_URL, # or where your redis server lives
"capacity": 1500, # default 100
"expiry": 10, # default 60
}
}
}
我正在使用我的 Django 应用程序进行负载测试,该应用程序使用 Django 通道和 Redis 通道层提供 GraphQL 订阅(django
、graphene-django
、channels
、graphene-subscriptions
, channels-redis
).作为 ASGI 服务器,我现在正在使用 daphne
。我使用 nginx
作为代理。后端通过 GraphQL 订阅发布消息的周期取决于后端通过 MQTT 接收消息的周期。我正在增加外部数据提供者向 MQTT 代理发布消息的周期性,这意味着后端必须处理这些消息并通过 GraphQL 订阅发布消息的周期性。我遇到以下错误:
2020-03-11 08:33:58,464 ERROR 2 of 12 channels over capacity in group subscriptions
这个问题似乎是由 channels_redis 引起的。我可以扩展基础设施来解决这个问题吗?
默认容量为 100 条消息,默认消息过期时间为 60 秒。因此,如果在这些容量/时间内从未读取过频道 约束,它会填满。
频道可能已满的一个原因是连接永远不正确 关闭。在这种情况下,频道将保留在组中并最终填满。
缓解这种情况的一种方法是拥有足够的容量和较短的超时时间。你 可以通过以下方式更改 Django 设置中的配置:
CHANNEL_LAYERS = {
"default": {
"BACKEND": "channels_redis.core.RedisChannelLayer",
"CONFIG": {
"hosts": REDIS_URL, # or where your redis server lives
"capacity": 1500, # default 100
"expiry": 10, # default 60
}
}
}