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注释
    RSA算法知识
    Ubuntu 14.04安装QQ2012
    学习Linux的好网站
    Linux编程学习笔记 -- Process
    Python urllib2 模块学习笔记
    Django Tutorial 学习笔记
    Java学习笔记:语言基础
    Python中的正则表达式
    读书笔记:黑客与画家
  • 原文地址:https://www.cnblogs.com/ExMan/p/10560431.html
Copyright © 2011-2022 走看看