以前從未出過問題,今天就不停的502 badgateway, 環境是nginx+django+uwsgi, django 版本1.11, uwsgi 2.0; 具體表現是nginx 502 badgateway, 但是django是可以收到消息的,但是無法返回, uwsgi 沒有找到access的記錄;
nginx報錯為
upstream prematurely closed connection while reading response header from upstream, client: ip, server: ip, request: "POST url HTTP/1.1", upstream: "uwsgi://127.0.0.1:18001", host: "ip:19020"
改nginx 的timeout是沒有作用的
nginx上游出錯主動斷開連接,可以看到是uwsgi的問題,uwsgi重啟就ok了,可能是uwsgi的問題,是起了太多的項目了么,回頭好好看一看uwsgi的配置教學,可能是配置出錯了.
然而並不是,出現這種情況一般都是自己的問題,處理業務中做了太多了數據庫操作或者是不恰當的事務性處理(比如在事務中做復雜的邏輯計算),這些才是主要原因,
有幾個結論就是:
1,少做數據庫的操作,
2,如果要做多個數據庫的操作,盡可能合並到事務中去做,因為事務是在內存中進行的,然后只是寫了一次硬盤所以會提高效率
3,做事務性操作之前請現將邏輯計算完,因為事務性的操作會鎖定表或者是行,其他業務不能夠寫對應的數據