zoukankan      html  css  js  c++  java
  • django+uwsgi+nginx数据表过大引起"out of memory for query result"

    昨天负责的一个项目突然爆“out of memory for query result”。

    背景

    项目的数据表是保存超过10m的文本数据,通过json方式保存进postgres中,上传一个13m的大文件处理过程中出错。

    怀疑

    1 .celery进程过多

    一开始怀疑celery进程过多导致的内存不足引起,查了一个有46个celery进程,
    改为5个worker,状况没得到改善。

    2.postgres work_mem过小

    接着环境postgres的work_mem配置过小,默认是4m,改大后照样无效果。

    3.django进程问题

    重新用runserver 运行,上传大文件,通过,也就是无django无关

    4.uwsgi配置

    查了google,将limit-as改为2046无效果,改为9999无效果。

    尝试

    经过上述实践,已经找到问题的根源,就是uwsgi进程内存过大后报错了,所以换gunicorn这个python服务器替换。
    用gunicorn替换uwsgi,上传后出现timeout,看来是默认超时时间过短,改为300s,再上传大文件,完美通过。



  • 相关阅读:
    Python服务Debian打包新思路
    小议Python3的原生协程机制
    推送公司今日菜单内容到手机
    Python包管理工具小结
    PAT 1068. 万绿丛中一点红
    PAT 1067. 试密码
    PAT 1066. 图像过滤
    PAT 1065. 单身狗
    PAT 1064. 朋友数
    PAT 1063. 计算谱半径
  • 原文地址:https://www.cnblogs.com/ExMan/p/10560431.html
Copyright © 2011-2022 走看看