姜戈频道"ERROR Y of N channels over capacity in group subscriptions"



我正在使用我的Django应用程序进行负载测试,该应用程序使用Django通道和redi通道层(djangographene-djangochannelsgraphene-subscriptionschannels-redis(提供GraphQL订阅。作为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
}
}
}

最新更新