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,再上傳大文件,完美通過。




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM