问题描述
我为 channel_redis 和我的 views.py 尝试了各种配置。使用 tracememalloc 我发现垃圾收集没有遗漏任何东西。我在websocket连接函数中使用了tracememalloc。
我是否为连接设置了超时,内存是否仍在增长。我也使用 django_prometheus。
目前这里是我的 Asgi.py
os.environ.setdefault("DJANGO_SETTINGS_MODULE","panoptes.settings")
django.setup()
application = get_default_application()
这是我的 redis 设置。
CHANNEL_LAYERS = {
"default": {
# Use InMemoryChannelLayer for testing only
# "BACKEND": "channels.layers.InMemoryChannelLayer"
"BACKEND": "channels_redis.core.RedisChannelLayer","CONfig": {
"hosts": [("redis",6379)],"capacity": 1500,"expiry": 60,"group_expiry": 42300,},}
}
相关的views.py
class NewAlert(View):
def post(self,request):
raw = request.body.decode("utf-8")
data = json.loads(raw)
for new_alert in data.get("alerts"):
status = new_alert.get("status")
new_alert["status"] = {
"state": status,}
create_or_update_alert(new_alert).save()
gc.collect()
return HttpResponse()
urls.py
urlpatterns = [
path("graphql/",csrf_exempt(GraphQLView.as_view(graphiql=True)),name="graphql"),path("alert/webhook/",csrf_exempt(views.NewAlert.as_view())),path("check",csrf_exempt(views.check_login),name="check_login"),path(
"favicon.ico",RedirectView.as_view(url=staticfiles_storage.url("panoptes.ico"))
),path("",views.index,name="index"),path("post_login",csrf_exempt(views.post_login),name="post_login"),path("post_logout",csrf_exempt(views.post_logout),name="post_logout"),]
我使用 react.js 作为前端。 Tracememalloc 只发现 "" 作为最大的块。 https://docs.python.org/3/library/tracemalloc.html#get-the-traceback-of-a-memory-block
我构建了该项目的一部分,但我从一位从未解决过问题的前同事那里接手了 websocket。
这是一个非常缓慢的增长。我们从来没有超过 10 个连接,而且很少。
我的轮班休息 4 天。当我离开时,内存约为 75Mb,当我回来时,内存约为 160Mb。
我有两个 cron 作业正在运行,但我已经尝试将它们删除 100 次,在它们完成后,内存会恢复到之前的状态。
当我回来时,增长仍在继续,但我通常会推送更改以尝试解决并重新启动它所在的容器。
尝试再次运行 tacememalloc 后
2021-02-05 16:13:00,852 INFO /usr/local/lib/python3.9/site-packages/channels_redis/core.py:0: size=2013 KiB (+2013 KiB),count=13809 (+13809),average=149 B
2021-02-05 16:13:00,852 INFO /usr/local/lib/python3.9/asyncio/queues.py:0: size=646 KiB (+646 KiB),count=2120 (+2120),average=312 B
2021-02-05 16:13:00,852 INFO /usr/local/lib/python3.9/threading.py:0: size=549 KiB (+549 KiB),count=2846 (+2846),average=198 B
2021-02-05 16:13:00,853 INFO /usr/local/lib/python3.9/site-packages/daphne/ws_protocol.py:0: size=463 KiB (+463 KiB),count=3943 (+3943),average=120 B
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)